2011-02-18 59 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>())); 

这确实为我所需要的伎俩。它检查插入是否被一种类型的定时器触发并且不是特定的(因为它不能作为其他地方创建的对象)