RhinoMocks – 存根返回参数的方法

我正在使用RhinoMocks,我需要存根方法,总是让它返回第三个参数,不pipe传入的是什么:

_service.Stub(x => x.Method(parm1, parm2, parm3)).Return(parm3); 

显然,这并不容易。 我并不总是知道自己会做什么,但我知道我总是想要回到第三名。

您可以使用Do()处理程序提供一个方法的实现:

 Func<TypeX,TypeY,TypeZ,TypeZ> returnThird = (x,y,z) => z; mock.Expect(x => x.Method(null, null, null)).IgnoreArguments().Do(returnThird); 

请注意TypeZ出现两次,因为它是一个input参数types和返回types。

这对我工作:

  _service .Stub(x => x.Method(Arg<string>.Is.Anything, ... )) .Return(null) // ... or default(T): will be ignored but RhinoMock requires it .WhenCalled(x => { // This will be used as the return value x.ReturnValue = (string) x.Arguments[0]; }); 

你可以用callback的expect方法返回你之后的值。 以下将返回null。

 _service.Expect(o => o.Method(null, null, null)) .Callback((object parm1, object parm2, object parm3) => { return parm3; }); 

我不确定您是否可以在存根上使用callback。