验证模拟的期望?

时间:2011-04-14 13:14:54

标签: c# rhino-mocks

documentation for Rhino Mocks中,它声明您必须验证对模拟的期望,以后必须使用VerifyAllExpectations()或AssertWasCalled()方法验证/断言。

但是,如果我评论验证,测试仍然通过。所以我想知道为什么你需要完成验证期望电话。

...
notificationSvc.Expect(o => o.UserIsLoggedOut());       
...
//notificationSvc.VerifyAllExpectations();

3 个答案:

答案 0 :(得分:1)

当您执行单元测试时,您不仅要测试您正在测试的组件的期望,还要测试您正在测试的组件的期望,以及它如何与其依赖的其他组件进行交互上

假设您嘲笑存储库&工作单元模式接口并将它们的模拟传递给组件。虽然如果您告诉存储库返回某些数据,该组件可能会给您正确的结果,但您希望验证接口的实现是否以您期望的方式调用。这就是验证的目的。

当结合测试组件处理的结果时,您不仅可以测试它将做什么,而且还将如何与它所需的组件进行交互。

答案 1 :(得分:0)

删除验证时,测试根本没有真正测试(除了可能产生的可能异常之外)。

基本上,您根本不测试测试对象与模拟的交互。

答案 2 :(得分:0)

验证期望对于测试用例同样重要,因为Assert语句用于测试。

你可以在Test方法中编写任何数量的没有Assert语句的代码,它会通过。 但问题是 - “它是测试什么?”

Assert声明是测试用例的症结

类似地,Verify方法是所有Expectation调用的关键,没有Verify方法,你的测试用例和没有Assert语句的测试用例一样好。

可以使用Expectations验证系统交互,这是一个三步过程

  1. 设置期望:让我们知道您希望调用哪些交互的模拟框架。
  2. 交互或执行操作:执行要在SUT(被测系统)上测试的实际呼叫
  3. 验证检查:要求模拟框架验证执行第2步时是否符合所有期望。