0
使用StructureMap ...StructureMap登記處單元測試項目:無默認實例註冊
我有一系列組件&的業務層中的單個IoC的入門點,其中我定義我ContainerRegistry
像這樣:
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());
}
除外:
現在,我想要寫的所有組件一套單元測試 - 包括業務工作流&組件。然而,當我嘗試創建WorkflowProvider的實例我得到以下異常:
var container = IoC.Initialize();
var workflowProvider = container.GetInstance<WorkflowProvider>()
沒有默認實例註冊,不能自動 類型確定「System.Reflection.Assembly」
目標:
此外,當我使用的業務層ContainerRegistry
從單元測試項目,我想潛艇titute的單元測試大會在映射的這一部分:
For<IWorkflowProvider>().Use<WorkflowProvider>()<br/>
.Ctor<Assembly>().Is(Assembly.GetExecutingAssembly());
問題:
- 是否單元測試項目也需要有自己的註冊?
- 而且,如果是這樣,它是什麼樣子?
- 如果是這樣,我該如何在1個項目中使用2個註冊表?
- 如何替換GetExecutingAssembly部分?
- 這裏的正確方法是什麼?
希望我解釋這個權利。
謝謝