当使用带有模拟对象的Rhino.Mocks时:
一旦调用了预期的方法而没有在调用此预期方法后执行行后,是否有办法传递单元测试?
由于
答案 0 :(得分:2)
从RhinoMocks 3.5开始,你可以使用漂亮的AssertWasCalled()
this.Service.BuldMessage("messageId");
this.Service.AssertWasCalled(x => x.GenerateMessage("messageId"), messageId));
编辑:回复评论
RhinoMock不负责更改测试执行流程,因此您必须使用NUnit断言, Assert.Pass()实用程序方法允许您立即结束测试,并将其记录为成功:
if (this.Service.AssertWasCalled(...)))
{
Assert.Pass("well done");
}
PS:正如其他人建议的那样,考虑重新进行单元测试,这会迫使你做出这样的条件测试退出。
答案 1 :(得分:2)
您可以在Rhino.Mocks中使用AssertWasCalled()
如果调用该方法并且不应运行以下行,则期望测试应该停止意味着您已将测试写错了。将断言(Nunit或其他)作为测试的最后一行并拆分测试。你可能正在测试两件事,那不是单元测试。在测试中没有这种分支流程。应该执行测试中的所有行。理想情况下,每个测试应该只有一个断言。
对于您期望的那种流程,您也会失去从测试失败时获得的反馈。通过查看测试名称,您不知道失败了什么。