J'ai une classe A qui a les éléments suivants:Moq une importation MEF?
public class A {
[Import(typeof(IMyService)]
public IMyService MyService { get; set; }
public A() {
CompositionInitializer.SatisfyImports(this);
}
public void DoWork() {
//Blah
MyService.DoIt();
//Blah
}
}
Et un test pour tester cette (séparée dll - évidemment)
[TestMethod]
public void TestDoWork() {
//Blah
DoWork();
//Assert assert
}
Cela échoue comme une tentative d'appeler 'MyService' me donne null . J'ai ensuite essayé:
[ClassInitialize]
public void InitialiseClass() {
var myService = new Mock<IMyService>();
MyService = myService.Object;
}
avec 'MyService' avoués comme:
[Export(typeof(IMyService))]
public IMyService MyService { get; set; }
Mais toujours pas de joie, que je manque quelque chose - est-ce possible? J'utilise SL3, MEF Preview 9 et MOQ.
Toute aide appréciée!
Vive
Chris
OK, mais pourquoi ai-je besoin d'utiliser l'importateur constructeur, la propriété fonctionne bien dans ma mise en œuvre réelle, il existe probablement une route pour être en mesure de se moquer de ces types d'importations? –
@Chris: bien que MEF encourage l'injection de propriétés, je préfère l'injection de construction car ainsi le compilateur vous empêche de créer des objets avec des dépendances manquantes. Cela vous permet également de rendre les champs de dépendance en lecture seule, vous n'avez donc pas à penser à ce qui se passe si une dépendance est remplacée. –
J'ai opté pour cette méthode, personnellement j'aimerais toujours savoir si vous pouvez simuler l'injection de propriété, mais cela aide à résoudre le problème que j'avais. Cheers. –