Pregunta

Estoy utilizando RhinoMocks, necesito un método de código auxiliar, y siempre tienen que devolver el tercer parámetro, independientemente de lo que se pasa en:

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

Obviamente, no es tan fácil. No siempre sé lo que los parms van a ser, pero sé que siempre quiero devolver el tercero uno.

¿Fue útil?

Solución

Puede proporcionar una implementación de un método con el Do () manejador :

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

Tenga en cuenta que TypeZ aparece dos veces, ya que es a la vez un tipo de argumento de entrada y el tipo de retorno.

Otros consejos

Esto funcionó para mí:

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

Se puede usar el método de esperar con una devolución de llamada para devolver el valor que usted está después. El siguiente devolverá un valor nulo.

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

No estoy seguro de si se puede usar una retrollamada en trozo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top