Rhino Mocks - 如果调用方法,则设置属性

时间:2009-08-28 21:07:23

标签: c# unit-testing rhino-mocks

如果调用方法,有没有办法让Rhino Mocks设置Stub的属性。

这样的事情:(粗体假冒代码)

callMonitor.Expect(x => x.HangUp())。 SetProperty(callMonitor.InACall = false);

HangUp方法返回void,我无法真正改变它。但我希望我的存根知道在调用HangUp时挂断电话。

4 个答案:

答案 0 :(得分:11)

您可以使用“WhenCalled”方法在调用存根时运行您自己的代码;非常肯定它也适用于Mocks。根据文档,WhenCalled是Callback的替换/升级。

callMonitor.Expect(x => x.HangUp())
.WhenCalled(invocation => callMonitor.InCall = false);

这篇文章末尾的一些信息: http://grahamnash.blogspot.com/2008/10/rhino-mocks-35.html

答案 1 :(得分:1)

在某些情况下,您可能需要这样做,但通常我希望您只需检测您的模拟/存根,以便它返回正确的值以响应您的代码。我能想到的唯一例外是部分模拟,你正在测试一个类的一部分,并想要模拟其他部分。

在属性上设置模拟非常简单。

callMonitor.Expect( x => x.HangUp() );
callMonitor.Expect( x => x.InACall ).Return( false );

如果callMonitor是存根,则可以直接设置属性。

callMonitor.Stub( x => x.HangUp() );
callMonitor.InACall = false;

答案 2 :(得分:1)

,您可以使用回拨方法:

 callMonitor.Expect(x => x.HangUp()).Callback(() => callMonitor.InCall = false);

答案 3 :(得分:-1)

我不是RhinoMocks专家,但我相信这应该有用。

SetupResult.For(callMonitor.InACall).Return(false);