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。