Tengo esta interfaz que devuelve vacío en algunas funciones que me gustaría burlar y me pregunto cuál es la forma correcta de hacerlo. A partir de ahora tengo lo siguiente:¿Cuál es la forma correcta de simular las funciones vacías en RhinoMocks?
var mocks = new MockRepository();
var mockedInterface = mocks.CreateMock<IMyInterface>();
Expect.Call(mockedInterface.FunctionThatReturn(param1, param2)).Return(Something);
mockedInterface.FunctionReturningVoid(param3, param4);
mocks.ReplayAll();
// Some assert and other stuff
mocks.VerifyAll();
¿Es esa la forma correcta de hacerlo? Creo que se ve raro ya que no estás manejando las dos funciones de la misma manera. Lo que me gustaría escribir es:
var mocks = new MockRepository();
var mockedInterface = mocks.CreateMock<IMyInterface>();
Expect.Call(mockedInterface.FunctionThatReturn(param1, param2)).Return(Something);
Expect.Call(mockedInterface.FunctionReturningVoid(param3, param4)); // This doesn't work.
mocks.ReplayAll();
// Some assert and other stuff
mocks.VerifyAll();
Pero eso no funciona en la fila 4. He encontrado algunos blog que dice que usted puede utilizar lambdas (o delegado) como
Expect.Call(() => mockedInterface.FunctionReturningVoid(param3, param4)); // This doesn't work.
Pero eso no Parece que tampoco funciona para mí. Tener el Expect.Call
hace que sea fácil identificar funciones falsas y es por eso que lo quiero. El error de compilación que obtengo es: "No se puede convertir la expresión lambda para escribir 'objeto' porque no es un tipo de delegado".
Entonces, ¿cómo se debe hacer?
ACTUALIZACIÓN: Se agregó información de error de compilación.
Se puede publicar IMyInterface también? –