우리는 Unity를 의존성 주입 프레임 워크로 사용하고 있습니다.SpecFlow step-file에서 의존성 주입 사용
수락 테스트를 만들고 DossierService 인스턴스가 필요합니다. BoDi.ObjectContainerException
: '인터페이스가 해결할 수없는 [...]'정확히 BoDi 무엇
[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
은 깨지지 않습니다.