2011-02-18 37 views
2

我目前正在研究用Moq編寫基本執行計時器的單元測試。有一個函數在定時器停止時調用,它將所有定時添加到數據庫中,我需要測試插入是否已被調用。 我已經使用類似的測試來通過homecontroller測試插入,但是這是直接進行的。使用MSTest和Moq測試存儲庫 - .Verify不起作用

// Calls AddToLog() which iterates through the list 
// adding all entries to the database 

_timer.Stop(); 
_repository.Verify(x => x.Insert(TimerObject)); 

我收到的錯誤是:

Expected invocation on the mock at least once, but was never performed: x => x.Insert(.splitTimer) 

Performed invocations: 
ITimersRepository.Insert(EF.Domain.Entities.Timer) 
ITimersRepository.Insert(EF.Domain.Entities.TimerSplit) 
ITimersRepository.Save() 

的addToLog()方法被挑釁被調用並調用存儲庫的.insert。我不確定爲什麼它會回來,因爲沒有被稱爲?

任何想法都會很棒。

感謝

+0

我相信我有答案。它應該是_timerRepository.Verify(x => x.Insert(It.IsAny ()));.任何人都可以驗證我正在以正確的方式做它嗎? – Henry 2011-02-18 14:39:43

回答

0
_timerRepository.Verify(x => x.Insert(It.IsAny<Timer>())); 

這確實爲我所需要的伎倆。它檢查插入是否被一種類型的定時器觸發並且不是特定的(因爲它不能作爲其他地方創建的對象)