我们使用Unity作为我们的依赖注入框架。在SpecFlow步骤文件中使用依赖注入
我想创建一个验收测试并需要一个DossierService实例。
不幸的是,我得到以下异常:
BoDi.ObjectContainerException: '界面不能得到解决[...]'
[Binding]
public class DossierServiceSteps : BaseSteps
{
private IDossierService dossierService;
public DossierServiceSteps(IDossierService dossierService)
{
this.dossierService = dossierService;
}
}
- 到底是什么博迪?我找不到任何有用的信息..
- 如何告诉SpecFlow使用普通的Unity容器?
在此先感谢
编辑: 我使用SpecFlow.Unity
试过像这样:
public static class TestDependencies
{
[ScenarioDependencies]
public static IUnityContainer CreateContainer()
{
var container = UnityConfig.GetConfiguredContainer();
container.RegisterTypes(typeof(TestDependencies).Assembly.GetTypes().Where(t => Attribute.IsDefined(t, typeof(BindingAttribute))),
WithMappings.FromMatchingInterface,
WithName.Default,
WithLifetime.ContainerControlled);
return container;
}
}
在UnityConfig
的类型是否正确注册
container.RegisterType<IDossierService, DossierService>(new InjectionConstructor(typeof(IDataService), typeof(IDossierRepository), typeof(IDbContext), true));
但我仍然得到同样的例外上。当我在CreateContainer()
的方法TestDependencies
的开始处放置断点时,它不会中断...