我正在尋找將我們的一些複雜創建代碼轉換爲使用IoC容器Autofac,並且因爲我非常信任TDD,所以我正在爲模塊配置編寫單元測試。如何使用命名組件單元測試此IoC註冊? (Autofac)
大部分功能非常容易測試,例如
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>();
我無法弄清楚什麼是寫確保富得ThingImplementer而不是OtherImplementer單元測試的簡便方法。我想知道是否值得付出努力,我們的高級集成測試涵蓋了這一點,但他們沒有給出單元測試所做的文檔或重構優勢。
你會爲此寫一個單元測試嗎? 如果是這樣,怎麼樣?