2011-08-10 45 views
1

我從這裏抓取了一些代碼:http://web.archive.org/web/20090407010431/http://code.jesschadwick.com/Snippets/TestDatabase.cs第一次Moqer,Verify()語法?

這似乎是一個理想的場景,我設置測試對實際分貝。

我是新來的單元測試,嘲笑等,到目前爲止我缺乏理解爲什麼Initialize_executes_schema_if_provided測試失敗。

我已經嘗試了代碼周圍的一些變化,在嘗試初始化之前和之後切換Expect()Setup()Verify(),但沒有喜悅。

ExecuteQuery方法是虛擬的,所以應該盡我所能地工作 - 我不明白爲什麼它不能驗證它被調用。

任何指針都會非常有幫助。

謝謝大家。

回答

1

由於Initialize方法是虛擬的,Moq用它自己的方法實現(在這種情況下什麼都不做)覆蓋它。當調用db.Initialize()時,調用Moq的實現,而不是被測試的類,這意味着對ExecuteQuery的調用永遠不會發生,並且是測試失敗的原因。

+0

好吧,我想我明白了,那麼我怎麼測試它被調用呢? – enashnash