通过 Autofact 为 Specflow 注入依赖项
Dependency Injection By Autofact For Specflow
我想为 Specflow 实现 DI,因此我安装了 Specflow.Autofac 成功安装后 运行 Specflow It Self。安装 Specflow.Autofac 后一切都出错了,我在 运行ning 或调试测试中遇到此错误:
Could not load type TechTalk.SpecFlow.Infrastructure.IBindingInstanceResolver
我没有得到关于这个问题的正确搜索结果。我感谢在此问题中的任何帮助或为 Specflow
实施依赖注入的分步过程
提前致谢
我尝试通过自己的 IoC 容器为 Specflow 实现 DI。 Specflow 有一个名为 ObjectContainer 的 Built-In IoC 容器。可以这样实现,为 Specflow 启用 DI:
[Binding]
public class TestDependecies
{
[BeforeScenario]
public void SetupContainer()
{
var objectContainer = (IObjectContainer)ScenarioContext.Current.GetBindingInstance(typeof(BoDi.IObjectContainer));
var wiringContainer = new WiringContainerWrapper(objectContainer);
TestConfigurator.Configure(wiringContainer);
}
}
通过挂钩 BeforScenario
属性对容器设置进行评估后,可以通过步骤 类.
的构造函数注入来实现注入
[Binding]
public class PromotionsSteps
{
private readonly IItemFacade itemFacade;
private readonly IPromotionFacade promotionFacade;
public PromotionsSteps(IItemFacade itemFacade,
IPromotionFacade promotionFacade)
{
this.itemFacade = itemFacade;
this.promotionFacade = promotionFacade;
}
[Given(@"I have a stepBase with name '(.*)' promotion with following values :")]
public void GivenIHaveAStepBaseWithNamePromotionWithFollowingValues(string p0, Table table)
{
ScenarioContext.Current.Pending();
}
.
.
.
}
您可能需要将 SpecFlow.Autofac 更新为支持您使用的 SpecFlow 版本的版本。 SpecFlow.Autofac SpecFlow 团队未发布。
在大多数次要版本中,我们正在更改插件界面,因此插件必须更新。当前 SpecFlow.Autofac 的稳定包说它支持 SpecFlow >= 2.1。这是错误的,因为我们用 2.2 更改了接口。
您可以尝试安装最新的 pre-release 版本 (https://www.nuget.org/packages/SpecFlow.Autofac/1.1.0-pre20171024),它说它支持 SpecFlow >= 2.2.1,但我不确定我们是否用 2.3 更改了插件接口。
我想为 Specflow 实现 DI,因此我安装了 Specflow.Autofac 成功安装后 运行 Specflow It Self。安装 Specflow.Autofac 后一切都出错了,我在 运行ning 或调试测试中遇到此错误:
Could not load type TechTalk.SpecFlow.Infrastructure.IBindingInstanceResolver
我没有得到关于这个问题的正确搜索结果。我感谢在此问题中的任何帮助或为 Specflow
实施依赖注入的分步过程提前致谢
我尝试通过自己的 IoC 容器为 Specflow 实现 DI。 Specflow 有一个名为 ObjectContainer 的 Built-In IoC 容器。可以这样实现,为 Specflow 启用 DI:
[Binding]
public class TestDependecies
{
[BeforeScenario]
public void SetupContainer()
{
var objectContainer = (IObjectContainer)ScenarioContext.Current.GetBindingInstance(typeof(BoDi.IObjectContainer));
var wiringContainer = new WiringContainerWrapper(objectContainer);
TestConfigurator.Configure(wiringContainer);
}
}
通过挂钩 BeforScenario
属性对容器设置进行评估后,可以通过步骤 类.
[Binding]
public class PromotionsSteps
{
private readonly IItemFacade itemFacade;
private readonly IPromotionFacade promotionFacade;
public PromotionsSteps(IItemFacade itemFacade,
IPromotionFacade promotionFacade)
{
this.itemFacade = itemFacade;
this.promotionFacade = promotionFacade;
}
[Given(@"I have a stepBase with name '(.*)' promotion with following values :")]
public void GivenIHaveAStepBaseWithNamePromotionWithFollowingValues(string p0, Table table)
{
ScenarioContext.Current.Pending();
}
.
.
.
}
您可能需要将 SpecFlow.Autofac 更新为支持您使用的 SpecFlow 版本的版本。 SpecFlow.Autofac SpecFlow 团队未发布。
在大多数次要版本中,我们正在更改插件界面,因此插件必须更新。当前 SpecFlow.Autofac 的稳定包说它支持 SpecFlow >= 2.1。这是错误的,因为我们用 2.2 更改了接口。
您可以尝试安装最新的 pre-release 版本 (https://www.nuget.org/packages/SpecFlow.Autofac/1.1.0-pre20171024),它说它支持 SpecFlow >= 2.2.1,但我不确定我们是否用 2.3 更改了插件接口。