Specflow上下文注入

博丹

这是关于specflow中上下文注入的问题。我的实体上课:

public class OrderInfo
{
    public string Status { get; set; }
    public string OrderName { get; set; }
}

在另一个类中,我使用此实体创建新订单:

[Binding]
public class OrderSteps
{
    private NgWebDriver driver;
    private OrderInfo orderInfo = new OrderInfo();

    public OrderSteps(NgWebDriver driver,OrderInfo orderInfo)
    {
        this.orderInfo = orderInfo;
        this.driver = driver;
    }

    [When(@"I am creating new order")]
    public void WhenIAmCreatingNewOrder(Table table)
    {
        var orderListPage = new OrdersListPage(driver);
        orderInfo = orderListPage.CreateNewOrder(table.CreateInstance<OrderInfo>());
    }
}

在此类中,我的方法返回一些存储在“ orderInfo”对象中的数据。一切正常,直到我需要在另一个类中使用该对象的数据。我正在尝试获取对象数据,但是里面是空的。

    [Binding]
public class BuyerPortalSteps
{
    private NgWebDriver driver;
    private OrderInfo orderInfo;

    public BuyerPortalSteps(NgWebDriver driver, OrderInfo orderInfo)
    {
        this.driver = driver;
        this.orderInfo = orderInfo;
    }
}

所以问题是:如何使用已经填充了第一类数据的对象来使用第二类数据

博丹

好像我找到了解决方案。我为OrderInfo做了一个子子类:

public class OrderInfoContext
{
    public OrderInfo OrderInfo { get; set; }
}

在我的Binding类中有一些更改:

public class OrderSteps
{
    private NgWebDriver driver;
    private List<FilterInfo> filterData = new List<FilterInfo>();
    private OrderInfoContext orderInfoContext;
    private OrderInfo orderInfo;

    public OrderSteps(NgWebDriver driver, OrderInfoContext orderInfoContext)
    {
        this.driver = driver;
        this.orderInfoContext = orderInfoContext;
    }

    [When(@"I am creating new order")]
    public void WhenIAmCreatingNewOrder(Table table)
    {
        var orderListPage = new OrdersListPage(driver);
        orderInfo = orderListPage.CreateNewOrder(table.CreateInstance<OrderInfo>());
        orderInfoContext.OrderInfo = orderInfo;
    }
}

现在,我可以在其他课程中使用存储的信息了:

    [Binding]
public class BuyerPortalSteps
{
    private NgWebDriver driver;
    private OrderInfoContext orderInfoContext;

    public BuyerPortalSteps(NgWebDriver driver, OrderInfoContext orderInfoContext)
    {
        this.driver = driver;
        this.orderInfoContext = orderInfoContext;
    }

    [Then(@"I am looking for order on buyer statistics grid")]
    public void ThenIAmLookingForOrderOnBuyerStatisticsGrid()
    {
        BuyerPortalDashboard buyerPortalDashboard = new BuyerPortalDashboard(driver);
        buyerPortalDashboard.CheckBuyerDashboardStatistic(orderInfoContext.OrderInfo);
    }
}

我认为原因是,如果要在类之间共享数据,则必须一次初始化该数据,而永远不要尝试再次对其进行编辑,因为可以在阅读它之前在任何地方对其进行更改。这只是我的假设

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

IWebDriver的Specflow上下文注入失败

来自分类Dev

IWebDriver的Specflow上下文注入失败

来自分类Dev

如何通过上下文注入共享SpecFlow中的步骤绑定类

来自分类Dev

如何从测试中注入上下文

来自分类Dev

上下文注入和BeforeFeature挂钩

来自分类Dev

上下文未正确注入

来自分类Dev

上下文注入和BeforeFeature挂钩

来自分类Dev

specflow生成上下文菜单中缺少的步骤定义

来自分类Dev

使用Hilt注入上下文:此字段泄漏上下文对象

来自分类Dev

如何在Spring上下文中注入模拟

来自分类Dev

使用Netty在Resteasy测试中注入上下文数据

来自分类Dev

Spring Boot:注入自定义上下文路径

来自分类Dev

以编程方式将Bean注入CDI上下文?

来自分类Dev

在Python中上下文注入静态类属性

来自分类Dev

将上下文注入这样的eventlet线程是否安全?

来自分类Dev

将自定义服务注入Behat上下文

来自分类Dev

如何将对象注入jersey请求上下文?

来自分类Dev

Light在MVC中注入数据库上下文

来自分类Dev

构造函数中上下文类的依赖注入

来自分类Dev

Kotlin对象中的Dagger 2注入上下文

来自分类Dev

依赖注入到Spring Servlet上下文(OncePerRequestFilter)

来自分类Dev

以编程方式将Bean注入CDI上下文?

来自分类Dev

Django - 将上下文注入 base.html

来自分类Dev

isGooglePlayServicesAvailable的上下文(上下文上下文)

来自分类Dev

反应-上下文

来自分类Dev

具有场景上下文的表中的Specflow使用参数

来自分类Dev

通过@Resource注入TimerService时,“在JNDI上下文中找不到注入数据”

来自分类Dev

MAT_DIALOG_DATA:错误:必须从注入上下文中调用inject()错误:必须从注入上下文中调用inject()

来自分类Dev

上下文代理:注销上下文

Related 相关文章

热门标签

归档