Ho una classe A, che ha la seguente:Moq a importazione MEF?
public class A {
[Import(typeof(IMyService)]
public IMyService MyService { get; set; }
public A() {
CompositionInitializer.SatisfyImports(this);
}
public void DoWork() {
//Blah
MyService.DoIt();
//Blah
}
}
e un test per testare questo (Dll separata - ovviamente)
[TestMethod]
public void TestDoWork() {
//Blah
DoWork();
//Assert assert
}
Questa non come il tentativo di chiamare 'MyService' mi dà nulla . Ho poi provato:
[ClassInitialize]
public void InitialiseClass() {
var myService = new Mock<IMyService>();
MyService = myService.Object;
}
con 'MyService' dichiarato come:
[Export(typeof(IMyService))]
public IMyService MyService { get; set; }
Ma ancora nessuna gioia, mi sto perdendo qualcosa - è anche possibile?
Sto usando SL3, MEF Preview 9 e MOQ.
Qualsiasi aiuto apprezzato!
Acclamazioni
Chris
OK, ma perché ho bisogno di utilizzare l'importatore del costruttore, la proprietà sta funzionando bene nella mia effettiva implementazione, presumibilmente c'è un percorso per essere in grado di prendere in giro questi tipi di importazioni? –
@Chris: sebbene MEF incoraggi l'iniezione di proprietà, preferisco l'iniezione di costruzione perché in questo modo il compilatore impedisce di creare oggetti con dipendenze mancanti. Permette anche di rendere i campi di dipendenza in sola lettura, quindi non devi pensare a cosa succede se una dipendenza viene sostituita. –
Ho optato per questo metodo, personalmente mi piacerebbe ancora sapere se è possibile prendere in giro l'iniezione di proprietà, ma questo aiuta a risolvere il problema che ho avuto. Cheers. –