私たちは依存性注入フレームワークとしてUnityを使用しています。SpecFlowのステップファイルで依存性注入を使用する
受け入れテストを作成し、DossierServiceのインスタンスが必要です。
は、残念ながら、私は次の例外を取得:
BoDi.ObjectContainerException: 'インターフェイスが解決することはできません[...]'
[Binding]
public class DossierServiceSteps : BaseSteps
{
private IDossierService dossierService;
public DossierServiceSteps(IDossierService dossierService)
{
this.dossierService = dossierService;
}
}
- Bodiのは正確には何ですか?役に立つ情報が見つかりません。
- 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
はブレークしません。