c# - verifiable - verify moq
Pasar Moq-objetos a constructor (2)
He estado usando RhinoMocks por un buen tiempo, pero solo comencé a buscar en Moq. Tengo este problema muy básico, y me sorprende que esto no salga de la caja. Supongamos que tengo la siguiente definición de clase:
public class Foo
{
private IBar _bar;
public Foo(IBar bar)
{
_bar = bar;
}
..
}
Ahora tengo una prueba donde necesito simular el IBar que se envía a Foo. En RhinoMocks simplemente lo haría de la siguiente manera, y funcionaría genial:
var mock = MockRepository.GenerateMock<IBar>();
var foo = new Foo(mock);
Sin embargo, en Moq esto no parece funcionar de la misma manera. Estoy haciendo lo siguiente:
var mock = new Mock<IBar>();
var foo = new Foo(mock);
Sin embargo, ahora falla, diciéndome "No se puede convertir de ''Moq.Mock'' a ''IBar''. ¿Qué estoy haciendo mal? ¿Cuál es la forma recomendada de hacer esto con Moq?
Necesitas pasar a través de la instancia del objeto del simulacro
var mock = new Mock<IBar>();
var foo = new Foo(mock.Object);
También puede usar el objeto simulado para acceder a los métodos de la instancia.
mock.Object.GetFoo();
var mock = new Mock<IBar>().Object