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
或者如果MockedImport
与Import
相同的参数:
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