2012-09-27 15 views
10

Tengo un código de ejecución con unidad.Cómo usar Unity.RegisterType con Moq?

Ahora quiero usar Moq para hacer mi prueba de unidad para ASP-MVC. En el código del global.asax, Tengo el siguiente:

IUnityContainer container = new UnityContainer(); 
container.RegisterType<IFoo, Foo>(new InjectionConstructor("xxx")); 

Ahora me escribió testcode con Moq:

IUnityContainer container = new UnityContainer(); 
var mockFoo = new Mock<IFoo>(); 

container.RegisterType<IFoo, mockFoo) >(new InjectionConstructor("xxx"));

pero esto no funcionan.

Error: El tipo 'Moq.Mock' no se puede utilizar como tipo de parámetro 'TTO' en el tipo genérico o método 'Microsoft.Practices.Unity.UnityContainerExtensions.RegisterType ... no hay conversión referencia implícita de 'Moq.Mock' a 'IFoo'

Respuesta

13

Usted está tratando de registrar el objeto falso, no el objeto simulado.

var mock = new Mock<IFoo>(); 
container.RegisterInstance<IFoo>(mock.Object); 
+0

esto funciona, gracias – boqus