uso - tipos de metodos en c#
Valor de retorno que se pasó a un método (3)
Aún más útil, si tiene múltiples parámetros, puede acceder a cualquiera o todos ellos con:
_mock.Setup(x => x.DoSomething(It.IsAny<string>(),It.IsAny<string>(),It.IsAny<string>())
.Returns((string a, string b, string c) => string.Concat(a,b,c));
Siempre debe hacer referencia a todos los argumentos para que coincidan con la firma del método, incluso si solo va a utilizar uno de ellos.
Tengo un método en una interfaz:
string DoSomething(string whatever);
Quiero burlarme de esto con MOQ, para que devuelva lo que fue pasado, algo como:
_mock.Setup( theObject => theObject.DoSomething( It.IsAny<string>( ) ) )
.Returns( [the parameter that was passed] ) ;
¿Algunas ideas?
El método Returns<T>
genérico puede manejar esta situación muy bien.
_mock.Setup(x => x.DoSomething(It.IsAny<string>())).Returns<string>(x => x);
O si el método requiere múltiples entradas, especifíquelas así:
_mock.Setup(x => x.DoSomething(It.IsAny<string>(), It.IsAny<int>())).Returns((string x, int y) => x);
Puedes usar un lambda con un parámetro de entrada, así:
.Returns((string myval) => { return myval; });
O un poco más legible:
.Returns<string>(x => x);