複雑な作成コードの一部を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>();
はfooがOtherImplementer ThingImplementerを取得していないことを確実にするためのユニットテストを書くための簡単な方法です。努力する価値があるのかどうか、これをカバーする高度な統合テストがありますが、単体テストが行うドキュメンテーションやリファクタリングの利点はありません。
ユニットテストを作成しますか? そうなら、どうですか?