通过 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 更改了插件接口。