2011-12-03 40 views
6

有沒有一種明智的方法來存根/模擬IDocumentSession.Query()的調用結果?單元測試RavenDb查詢

我有一個命令,我想驗證方法是在對象上調用的(即被測試的「單元」是命令而不是命令編排的對象)。我無法將Mock對象(通過RhinoMocks)保存到嵌入式數據庫實例中,因此此時被迫對所調用的對象進行狀態驗證,而不是僅僅驗證是否調用了正確的方法。

謝謝, 馬特

回答

6

您使用EmbeddableDocumentStore { RunInMemory = true}的單元測試時的更好。 那就是說,IDocumentSession應該是很容易嘲笑

+0

謝謝Ayende,問題是使用EmbeddedDocumentStore意味着我必須使用真實對象而不是嘲笑。 IDocumentSession確實很容易模擬,而不是那麼多。 – mattcole

+0

@mattcole使用'EmbeddableDocumentStore {RunInMemory = true}有什麼問題?你爲什麼要嘲笑'IDocumentSession'?是的......運行'EmbeddableDocumentStore'比模擬的稍微慢一點,但我確信* EmbeddableDocumentStore創建的主要原因之一是單元測試。 –

+1

我現在在頭腦中打擊了兩件事:1.不要告訴我不要模仿 - 我不能忍受這種難聞的氣味。 2.使用EmbeddableDocumentStore時,測試運行非常慢 - 所以我想模擬! – Ronnie