在documentation for Rhino Mocks中,它声明您必须验证对模拟的期望,以后必须使用VerifyAllExpectations()或AssertWasCalled()方法验证/断言。
但是,如果我评论验证,测试仍然通过。所以我想知道为什么你需要完成验证期望电话。
...
notificationSvc.Expect(o => o.UserIsLoggedOut());
...
//notificationSvc.VerifyAllExpectations();
答案 0 :(得分:1)
当您执行单元测试时,您不仅要测试您正在测试的组件的期望,还要测试您正在测试的组件的期望,以及它如何与其依赖的其他组件进行交互上
假设您嘲笑存储库&工作单元模式接口并将它们的模拟传递给组件。虽然如果您告诉存储库返回某些数据,该组件可能会给您正确的结果,但您希望验证接口的实现是否以您期望的方式调用。这就是验证的目的。
当结合测试组件处理的结果时,您不仅可以测试它将做什么,而且还将如何与它所需的组件进行交互。
答案 1 :(得分:0)
删除验证时,测试根本没有真正测试(除了可能产生的可能异常之外)。
基本上,您根本不测试测试对象与模拟的交互。
答案 2 :(得分:0)
验证期望对于测试用例同样重要,因为Assert语句用于测试。
你可以在Test方法中编写任何数量的没有Assert语句的代码,它会通过。 但问题是 - “它是测试什么?”
Assert声明是测试用例的症结。
类似地,Verify方法是所有Expectation调用的关键,没有Verify方法,你的测试用例和没有Assert语句的测试用例一样好。
可以使用Expectations验证系统交互,这是一个三步过程