を登録されていない...のStructureMapレジストリ:いいえ、デフォルトのインスタンスはのStructureMapを使用して
私はそうのように私のContainerRegistry
を画定私は、ビジネス層内のアセンブリの一連の&単一のIoCエントリ・ポイントを持っています。
BUSINESS.DLLレジストリ:それ自身のライブラリで
WorkflowProviderクラスの生活。そのため、私はBUSINESS LAYERSアセンブリをWorkflowProviderに渡しているので、BUSINESS LAYER内の特定の(期待される)クラスを動的に「見つける」ことができます。
// I have simplified this class for the question
public ContainerRegistry()
{
Scan(
scan =>
{
scan.TheCallingAssembly();
scan.WithDefaultConventions();
scan.LookForRegistries();
scan.AssembliesFromApplicationBaseDirectory(f => f.FullName.StartsWith("My.Awesome.Application", true, null));
scan.AddAllTypesOf(typeof(IWorkflowProvider));
scan.SingleImplementationsOfInterface();
});
For<IWorkflowProvider>().Use<WorkflowProvider>()
.Ctor<Assembly>().Is(Assembly.GetExecutingAssembly());
}
例外は: - BUSINESS &ワークフローアセンブリを含む
は今、私はすべてのアセンブリのユニットテストのセットを書きたいです。私はWorkflowProviderのインスタンスを作成しようとすると、しかし、私は次の例外を取得しています:
var container = IoC.Initialize();
var workflowProvider = container.GetInstance<WorkflowProvider>()
んが、デフォルトのインスタンスが登録されていないと自動的に タイプのために決定することができない「System.Reflection.Assembly」さらに
、私は潜水艦に私がしたいユニットテストプロジェクトからビジネスレイヤContainerRegistry
を使用します。
GOALマッピングのこの部分にunittestのアセンブリをtitute:
For<IWorkflowProvider>().Use<WorkflowProvider>()<br/>
.Ctor<Assembly>().Is(Assembly.GetExecutingAssembly());
質問:ユニットテストプロジェクトはまた、自身のレジストリを
- が必要ですか?
- もしそうなら、どのように見えますか?
- もしそうなら、どのように1つのプロジェクトで2つのレジストリを消費しますか?
- GetExecutingAssembly部分をどのように置き換えるのですか?
- ここで正しいアプローチは何ですか?
この権利を説明したいと思います。
ありがとうございました