Estoy tratando de convertir parte de nuestro código de creación complejo para usar un contenedor IoC, Autofac, y porque soy un gran creyente en TDD, estoy escribiendo pruebas unitarias para la configuración del Módulo.¿Cómo probar esta unidad de registro de IoC utilizando componentes con nombre? (Autofac)
La mayor parte de la funcionalidad es muy fácil de probar, p.
var obj = container.Resolve<IThing>();
Assert.IsInstanceOfType(obj, typeof(ThingImplementer));
pero tenemos una serie de casos en los que tenemos múltiples ejecutores de la misma interfaz y distintos actores están siendo pasados a diferentes clases concretas. Lo resolví mediante el uso de un registro con nombre, p.
builder.RegisterType<ThingImplementer>().Named<IThing>("Implementer1");
builder.RegisterType<OtherImplementer>().Named<IThing>("Implementer2");
builder.Register(c => new Foo(c.ResolveNamed<IThing>("Implementer1"))).As<IFoo>();
Lo que no puedo entender es una manera fácil de escribir una prueba unitaria de asegurar que se pone Foo ThingImplementer y no OtherImplementer. Me pregunto si vale la pena el esfuerzo, tenemos pruebas de integración de alto nivel que lo cubren, pero no proporcionan la documentación ni los beneficios de refactorización que ofrecen las pruebas unitarias.
¿Escribirías una prueba unitaria para esto? Si es así, ¿cómo?