Csharp/C#教程:RhinoMocks模拟方法没有返回分享


RhinoMocks模拟方法没有返回

我是嘲笑的新手。 我需要模拟方法(它没有返回值)。 我找不到任何模拟方法的例子。 我需要模拟ITempDa.Import方法。

  var stub = MockRepository.GenerateStub(); stub.Stub(x => x.Import(param1)). ??? public void MockedImport() { // some processing here } 

ITempDa.Import应该被ITempDa.Import ,而应该调用一些内部方法“ MockedImport ”。

正如@JamesLucas所说,你不需要使用Return()方法(只有当你的方法不是void时才应该使用这个方法)。

在这种情况下,您应该使用Do()方法:

 var stub = MockRepository.GenerateStub(); stub.Stub(x => x.Import(Arg.Is.Anything)) .Do(new Action(o => MockedImport())); 

或者如果MockedImportImport相同的参数:

 stub.Stub(x => x.Import(Arg.Is.Anything)) .Do(new Action(MockedImport); 

你应该使用WhenCalled方法,当被测试的方法调用你的假,你想拦截执行(执行一​​些东西+更改返回值/更改参数/做额外的步骤等等)。 使用Do而不是WhenCalled另一个原因是,您的代码变得更具可读性。

通常我不建议使用IgnoreArguments方法。 原因很简单,就是测试方法行为。 当某些内容违反方法行为时,测试应该失败。 IgnoreArguments很容易隐藏东西。 但是,如果调用参数不重要,请执行以下操作:

 stub.Stub(x => x.Import(null)) .IgnoreArguments() .Do(new Action(o => MockedImport())); 

在这种情况下,您不需要Return()调用,因为该方法返回void。 如果要拦截调用并对模拟操作执行某些逻辑,请使用WhenCalled。 在这种情况下,它也只是忽略Stub中的参数并处理WhenCalled表达式中的所有内容。 例如

上述就是C#学习教程:RhinoMocks模拟方法没有返回分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

  var stub = MockRepository.GenerateStub(); stub.Stub(x => x.Import(null)) .IgnoreArguments() .WhenCalled(invocation => { var arg = invocation.Arguments[0] as ...; // etc }); 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/988552.html

(0)
上一篇 2021年12月24日
下一篇 2021年12月24日

精彩推荐