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

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

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

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

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

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

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

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

是的 ,您可以使用Callback方法:

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

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

在房产上设置模拟非常简单。

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

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

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

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

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