验证对模拟的期望?

| 在Rhino Mocks的文档中,它声明您必须验证对模拟的期望,然后必须使用VerifyAllExpectations()或AssertWasCalled()方法来验证期望。 但是,如果我注释掉验证,则测试仍会通过。因此,我想知道为什么您根本需要致电验证期望电话。
...
notificationSvc.Expect(o => o.UserIsLoggedOut());       
...
//notificationSvc.VerifyAllExpectations();
    
已邀请:
验证期望对于测试用例至关重要,对于测试而言,确认声明也是如此。 您可以在Test方法中编写任何代码而无需使用Assert语句,这将通过。 但是问题是-“它正在测试吗?” 断言是测试用例的关键。 同样,Verify方法是所有Expectation调用的关键,如果没有Verify方法,您的测试用例与没有Assert语句的测试用例一样好。 可以使用Expectations验证系统交互,这是一个三步过程 设定期望值:让您知道模拟框架您希望调用哪些交互。 交互或执行操作::在SUT(被测系统)上执行要测试的实际呼叫 验证期望:在执行步骤2时,要求模拟框架验证是否满足所有期望。     
在执行单元测试时,您不仅在测试所测试组件的期望值,还在测试所测试组件的期望值及其与所依赖的其他组件的交互方式。 假设您模拟一个存储库和工作单元模式接口,并将其模拟传递给您的组件。如果告诉存储库返回某些数据,该组件可能会为您提供正确的结果,但您需要验证接口的实现是否按预期的方式被调用。这就是验证的目的。 当与测试组件的处理结果相结合时,您不仅要确定组件将要执行的工作,而且还要如何与组件所需的组件进行交互来进行更加确定的测试。     
删除验证时,该测试实际上并没有进行太多测试(可能会生成其他例外)。 本质上,您根本就没有测试被测试对象与模拟对象之间的交互。     

要回复问题请先登录注册