tengo una clase A, que tiene la siguiente:Moq a MEF Importar?
public class A {
[Import(typeof(IMyService)]
public IMyService MyService { get; set; }
public A() {
CompositionInitializer.SatisfyImports(this);
}
public void DoWork() {
//Blah
MyService.DoIt();
//Blah
}
}
y una prueba para probar esto (independiente DLL - obviamente)
[TestMethod]
public void TestDoWork() {
//Blah
DoWork();
//Assert assert
}
Esta falla como intentar llamar 'MyService' me da nula . entonces he intentado:
[ClassInitialize]
public void InitialiseClass() {
var myService = new Mock<IMyService>();
MyService = myService.Object;
}
con 'MyService' declararse como:
[Export(typeof(IMyService))]
public IMyService MyService { get; set; }
Pero todavía no hay alegría, me estoy perdiendo algo - es esto posible?
Estoy usando SL3, MEF Preview 9 y MOQ.
Cualquier ayuda apreciada!
Saludos
Chris
OK, pero ¿por qué necesito usar el importador del constructor, la propiedad funciona bien en mi implementación real, presumiblemente hay una ruta para poder simular esos tipos de importaciones? –
@Chris: aunque MEF fomenta la inyección de propiedades, prefiero la inyección de construcción porque de esa forma el compilador evita que cree objetos con dependencias faltantes. También le permite hacer que los campos de dependencia sean de solo lectura, por lo que no tiene que pensar en lo que sucede si se reemplaza una dependencia. –
He optado por este método, personalmente todavía me gustaría saber si puede burlarse de la inyección de la propiedad, pero esto ayuda a solucionar el problema que tenía. Saludos. –