【发布时间】:2018-03-03 15:26:14
【问题描述】:
我们使用 Unity 作为我们的依赖注入框架。
我想创建一个验收测试并需要一个 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));
但我仍然遇到同样的异常。当我在TestDependencies 的CreateContainer() 方法的开头放置断点时,它不会中断...
【问题讨论】:
标签: c# .net unity-container specflow acceptance-testing