Je cherche à convertir une partie de notre code de création complexe pour utiliser un conteneur IoC, Autofac, et parce que je crois énormément en TDD, j'écris des tests unitaires pour la configuration du module.Comment tester unitairement cet enregistrement IoC en utilisant des composants nommés? (Autofac)
La plupart des fonctionnalités sont très faciles à tester, par ex.
var obj = container.Resolve<IThing>();
Assert.IsInstanceOfType(obj, typeof(ThingImplementer));
Mais nous avons un certain nombre de cas où nous avons plusieurs de la implémenteurs même interface et différentes sont transmises implémenteurs à différentes classes concrètes. J'ai résolu ceci en utilisant l'enregistrement nommé par ex.
builder.RegisterType<ThingImplementer>().Named<IThing>("Implementer1");
builder.RegisterType<OtherImplementer>().Named<IThing>("Implementer2");
builder.Register(c => new Foo(c.ResolveNamed<IThing>("Implementer1"))).As<IFoo>();
Ce que je ne peux pas comprendre est un moyen facile d'écrire un test unitaire pour faire en sorte que Foo se ThingImplementer et non OtherImplementer. Je me demande si cela en vaut la peine, nous avons des tests d'intégration de haut niveau qui couvrent cela, mais ils ne fournissent pas la documentation ou les avantages de refactoring que font les tests unitaires.
Souhaitez-vous écrire un test unitaire pour cela? Si oui, comment?