我正在使用 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];
            });

您可以使用指望方法有回调返回,你是后的值。下面将返回空值。

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

我不知道你是否能在末节使用回调。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top