Как провести модульное тестирование этой регистрации IoC с использованием именованных компонентов? (Autofac)

Я собираюсь преобразовать часть нашего сложного кода создания для использования контейнера IoC, Autofac, и, поскольку я очень верю в TDD, я пишу модульные тесты для конфигурации модуля .

Большую часть функциональности очень легко протестировать, например

var obj = container.Resolve<IThing>();
Assert.IsInstanceOfType(obj, typeof(ThingImplementer));

Но у нас есть ряд случаев, когда у нас есть несколько реализаторов одного и того же интерфейса, и разные реализаторы передаются в разные конкретные классы. Я решил эту проблему, используя именованную регистрацию, например

builder.RegisterType<ThingImplementer>().Named<IThing>("Implementer1");
builder.RegisterType<OtherImplementer>().Named<IThing>("Implementer2");
builder.Register(c => new Foo(c.ResolveNamed<IThing>("Implementer1"))).As<IFoo>();

What I can ' t понять - это простой способ написать модульный тест, чтобы убедиться, что Foo получает ThingImplementer, а не OtherImplementer. Мне интересно, стоит ли это усилий, у нас есть интеграционные тесты высокого уровня, которые покрывают это, но они не дают документации или преимуществ рефакторинга, которые дают модульные тесты.

Вы бы написали для этого модульный тест? Если да, то как?

6
задан Andy Lowry 28 November 2010 в 14:28
поделиться