web-dev-qa-db-ja.com

RhinoMocks-パラメータを返すメソッドをスタブします

RhinoMocksを使用しています。メソッドをスタブ化する必要があり、渡される内容に関係なく、常に3番目のパラメーターを返すようにします。

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

明らかに、それはそれほど簡単ではありません。私はいつもparmsがどうなるかわかりませんが、私はいつも3番目のものを返したいと思っています。

36
Martin

Do()ハンドラー を使用してメソッドの実装を提供できます。

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

TypeZは、入力引数の型と戻り値の型の両方であるため、2回表示されることに注意してください。

66
Wim Coenen

これは私のために働いた:

        _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];
            });
7
Jon Rea

コールバックでexpectメソッドを使用して、目的の値を返すことができます。以下はnullを返します。

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

スタブでコールバックを使用できるかどうかはわかりません。

0
Michael