【发布时间】:2011-03-21 19:34:02
【问题描述】:
我正在为我的 MVC 2 控制器编写单元测试(使用 NUnit 和 Moq),并遵循 Steven Sanderson 的 Pro ASP.net MVC 2 Framework 书中的示例(好书,顺便说一句)。但是,我遇到了问题,我认为这只是由于我对 NUnit 缺乏了解。
这是一段摘录,已删除不相关的部分:
[Test]
public void Cannot_Save_Invalid_Event()
{
...
repository.Setup(x => x.SaveEvent(evt)).Callback(Assert.Fail);
...
repository.Verify(x => x.SaveEvent(evt));
}
这个测试对我来说是通过了,虽然据我了解,这两个陈述应该直接相互冲突。第二个最初不存在,但我将其放入以验证它是否出于正确的原因通过。
据我了解,如果调用“repository.SaveEvent(evt)”,我的存储库设置为失败。但是,在测试的后期,我尝试验证是否调用了“repository.SaveEvent(evt)”。既然通过了,这不就意味着它既被调用了,又没有被调用?也许这些陈述不像我怀疑的那样。
有人能解释一下这两个陈述如何不是对立的,以及它们如何同时存在并且测试仍然通过吗?
【问题讨论】:
标签: unit-testing nunit moq