我正在使用 RhinoMocks,我需要存根一个方法,并且总是让它返回第三个参数,无论传入什么:
_service.Stub(x => x.Method(parm1, parm2, parm3)).Return(parm3);
显然,这并不容易。我并不总是知道参数会是什么,但我知道我总是想退回第三个。
我正在使用 RhinoMocks,我需要存根一个方法,并且总是让它返回第三个参数,无论传入什么:
_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
出现了两次,因为它既是输入参数类型又是返回类型。
这对我有用:
_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];
});
您可以使用带有回调的 expect 方法来返回您所追求的值。以下将返回 null。
_service.Expect(o => o.Method(null, null, null))
.Callback((object parm1, object parm2, object parm3) => { return parm3; });
我不确定您是否可以在存根上使用回调。