unit-testing - mocks - spock mock method




RhinoMocks-Stub eine Methode, die einen Parameter zurückgibt (2)

Ich verwende RhinoMocks, ich muss eine Methode stubben und immer den dritten Parameter zurückgeben, unabhängig davon, was übergeben wird:

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

Offensichtlich ist es nicht so einfach. Ich weiß nicht immer, was die Parms sein werden, aber ich weiß, dass ich immer den 3. zurückgeben will.


Sie können die Methode expect mit einem Callback verwenden, um den gewünschten Wert zurückzugeben. Der folgende Code gibt null zurück.

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

Ich bin mir nicht sicher, ob Sie Callback auf Stub verwenden können.


Das hat für mich funktioniert:

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




stubbing