gpt4 book ai didi

bdd - 上下文注入(inject)和 BeforeFeature 钩子(Hook)

转载 作者:行者123 更新时间:2023-12-04 13:41:07 25 4
gpt4 key购买 nike

我正在尝试进行一些初始设置,为特定功能下的场景设置环境。我将设置数据放在一个单独的类中。我添加了一个 specflow Hook 文件并将其修改为用作之前的功能 Hook 。然后我尝试使用上下文注入(inject)。在中,我为 BeforeScenario Hook 文件创建了安装类的私有(private)变量和构造函数(采用安装类的对象)。

我面临的问题是 BeforeFeature 方法必须按照规范流静态化。如果我将私有(private)安装类设为静态,则不会调用构造函数。

我做的对吗?或者我想做的事情有可能吗?

[Binding]
public class BeforeFeature
{
private static SetUp setUp;

public BeforeFeature(SetUp setUpObject)
{
setUp = setUpObject;
}

[BeforeFeature]
public static void RunBeforeFeature()
{
//Some processing.
setUp.baseDir = "some data";
setUp.status = "some data"
}
}

最佳答案

您可以告诉 SpecFlows 上下文注入(inject)框架您有一个对象,当 Step 类在其构造函数中请求实例时,它应该使用该对象。这可以像 the example 中所示那样完成。 :

[Binding]
public class BeforeFeature
{
private readonly IObjectContainer objectContainer;
private static SetUp setUp;

public BeforeFeature(IObjectContainer container)
{
this.objectContainer = objectContainer;
}

[BeforeFeature]
public static void RunBeforeFeature()
{
//Some processing.
setUp.baseDir = "some data";
setUp.status = "some data"
}

[BeforeScenario]
public void RunBeforeScenario()
{
objectContainer.RegisterInstanceAs<SetUp>(setUp);
}
}

你在场景而不是功能之前进行设置,但如果你只创建一次 SetUp 并在 [BeforeFeature] 中设置它的值,那么你应该得到相同的每个场景中的实例,因此在那里所做的任何修改都应该坚持(假设这是你想要的,否则只需在 BeforeScenario 方法中创建一个新的 SetUp )

只要您的 Step 类现在在构造函数中请求 SetUp 实例,它们就应该获得您放置在容器中的实例。

关于bdd - 上下文注入(inject)和 BeforeFeature 钩子(Hook),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26227406/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com