2009-06-03 12 views
5

estoy tratando de utilizar la clase MoqAutoMocker que viene con StructureMap y no puedo encontrar ningún ejemplo de la forma en que se debe utilizar. Todo lo que tengo que seguir es el example at the StructureMap site that uses RhinoMocks.¿Cómo uso el MoqAutoMocker que viene con StructureMap 2.5.3?

Lo que estoy tratando de hacer es conseguir referencia a uno de mis auto-burlado dependencias/inyectadas utilizando el método GET. De acuerdo a ese enlace anterior, debería ser capaz de hacer algo como esto

// This retrieves the mock object for IMockedService 
    autoMocker.Get<IMockedService>().AssertWasCalled(s => s.Go()); 

Nota cómo se puede utilizar AssertWasCalled, que inidcates que la función get devuelve una referencia al objeto RhinoMocks Mock? Este mismo código no funciona cuando uso MoqAutoMocker.

Tengo un SignInController clase que depende de una ISecurityService en el constructor. Utilizando el MoqAutoMocker como el RhinoAutoMocker se utiliza en el ejemplo, creo que debería ser capaz de hacer esto ...

var autoMocker = new MoqAutoMocker<SignInController>(); 
autoMocker.Get<ISecurityService>().Setup(ss => ss.ValidateLogin 
(It.IsAny<string>(), It.IsAny<string>())).Returns(true); 

Pero el problema es que nunca consigo el acceso al método de instalación. En este caso, la llamada a autoMocker.Get parece volver una instancia de ISecurityService y no Mock <ISecurityService>

Alguien ha utilizado con éxito MoqAutoMocker de esta manera? ¿Lo estoy haciendo mal?

+0

Estoy teniendo el mismo problema exacto. Lo averiguaste ? – Sunit

Respuesta

10

Hace poco me encontré con un problema simillar. Parece que la solución es hacer algo como esto:

var autoMocker = new MoqAutoMocker<SignInController>(); 
var mock = autoMocker.Get<ISecurityService>(); 
Mock.Get(mock).Setup(ss => ss.ValidateLogin 
(It.IsAny<string>(), It.IsAny<string>())).Returns(true); 

También han publicado un ejemplo más largo en mi blog: Setting Expectations With StructureMap’s MoqAutoMocker.

+0

Eres rockero. Esto funcionó para mí. Estaba a punto de abandonar el uso del AutoMocker hasta que vi esto. ¡Gracias! – JamieGaines

+0

@JoelAbrahamsson - enlace de URL a esa entrada de blog, errores. –

+0

He escrito un [blog] (http://evolutionarydeveloper.blogspot.co.uk/2012/10/automock-with-structuremap-and-moq.html) sobre el tema que utiliza 'Mock.Get' envuelto en una práctica clase base. – Nick

1

autoMocker.Get<ISecurityService>()
volverá ISecurityService y no se puede configurar en él. En contrario
Mock.Get(mock)
devolverá Moq.Mock, entonces usted podría configurar en él.

Cuestiones relacionadas