繁体   English   中英

在模拟对象上调用预期方法后,如何立即传递单元测试?

[英]How can I pass a unit test immediately after an expected method is called on the mock object?

使用带有模拟对象的Rhino.Mocks时:

有没有办法在调用预期方法后调用单元测试而不调用此预期方法后执行行?

谢谢

从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:正如其他人建议的那样考虑重新进行单元测试,这迫使你做出这样的条件测试退出。

您可以在AssertWasCalled()使用AssertWasCalled()

如果调用该方法并且不应运行以下行,则期望测试应该停止意味着您已将测试写错了。 将断言(Nunit或其他)作为测试的最后一行并拆分测试。 你可能正在测试两件事,那不是单元测试。 在测试中没有这种分支流程。 应该执行测试中的所有行。 理想情况下,每个测试应该只有一个断言。

根据您期望的那种流程,您也会失去从测试失败时获得的反馈。 通过查看测试名称,您不知道失败了什么。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM