代码之家  ›  专栏  ›  技术社区  ›  Vaccano

rhino mocks-在调用方法时设置属性

  •  8
  • Vaccano  · 技术社区  · 15 年前

    如果调用一个方法,rhino mock是否可以设置存根的属性。

    像这样:(粗体的假代码)

    callmonitor.expect(x=>x.hangup())。 setproperty(callmonitor.inacall=false) ;

    hangup方法返回void,我无法真正更改它。但我想让我的存根知道,当挂断电话时,电话被挂断了。

    4 回复  |  直到 15 年前
        1
  •  11
  •   Mark Simpson    15 年前

    当调用存根时,您可以使用“when called”方法运行自己的代码;非常确定它也应该与mock一起工作。根据文档,whencalled是回调的替换/升级。

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

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

        2
  •  1
  •   Mark Seemann    15 年前

    是的 ,您可以使用 回调 方法:

     callMonitor.Expect(x => x.HangUp()).Callback(() => callMonitor.InCall = false);
    
        3
  •  1
  •   tvanfosson    15 年前

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

    在属性上设置mock非常容易。

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

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

    callMonitor.Stub( x => x.HangUp() );
    callMonitor.InACall = false;
    
        4
  •  -1
  •   Stephanvs    15 年前

    我不是犀牛模仿专家,但我相信这应该管用。

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