【问题标题】:Cucumber parse table to list of objects黄瓜解析表到对象列表
【发布时间】:2017-03-01 11:44:58
【问题描述】:

在 cucumber 中,我可以将表格解析为对象列表,例如:

public class Model {
    public String a;
    public String b;
    public String c;
}

我的功能文件:

Scenario: Example
Given examples
|a     |b      |c    |
|lsj   |fjsldkf|fljs |
|fjsdfj|jfkskjl|fsjls|

我的步类:

@Given("$examples$")
public void examples(List<Model> list){}

当我的模型对象有其他对象的引用时,我该怎么做,例如:

public class SubModel{
    public String subA;
    public String subB;
}

public class Model {
    public String a;
    public String b;
    public String c;
    public SubModel subModel1;
    public SubModel subModel2;
}

在这种情况下,如何编写表格以便解析为模型列表?

【问题讨论】:

  • 您需要手动创建模型对象。 Cucumber 无法处理包含其他类的类的创建。由于 cucumber 使用反射来填充字段,而不是调用构造函数,您将无法创建子模型对象。我会创建一个类,它将所有必需的数据接收到字符串字段中,并具有一个返回正确创建的模型对象的方法。

标签: cucumber bdd serenity-bdd cucumber-serenity


【解决方案1】:

如下使用。它会工作

@Given("^examples$")
public void examples(DataTable sampleTable) {
    Map<String, String> sampleMap = new HashMap<>();
    DataTableRow header = sampleTable.getGherkinRows().get(0);
    DataTableRow value = sampleTable.getGherkinRows().get(1);
    for (String key : header.getCells()) {
        sampleMap.put(key, value.getCells().get(header.getCells().indexOf(key)));
    }

    client.setSampleDetails(sampleMap);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-03
    • 2022-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多