gpt4 book ai didi

java - 如何将 Gherkin 步骤定义数据映射到 Cucumber 中的 Java 对象?

转载 作者:行者123 更新时间:2023-11-30 06:04:16 25 4
gpt4 key购买 nike

我有以下三个类(class):

class City {
String name;
String code;
}

class Address {
String street;
City city;
}

class Person {
String name;
int age;
Address address;
}

现在,我有一个 REST API 来发布一个人。

POST /person

{
"name":"John",
"age":21,
"address":{
"street":"First st.",
"city":{
"name":"London"
}
}
}

为了测试此 API,我使用 Cucumber 创建了一个场景,并在其中创建了以下步骤定义:

Then a person is created using REST api "/person"
| name | age | address.street | address.city.name |
| John | 21 | First st. | London |

在我的 Java 类中,创建了以下方法来将此步骤映射到它:

public void create_a_person(Person person){
System.out.println("Person - " + person);
}

此代码无法使用步骤中给出的数据创建人员对象。它抛出以下异常:

cucumber.runtime.CucumberException: Not a Map or List type: class Person

但是,如果给出如下数据,它可以轻松创建 Person 对象:

Then a person is created using REST api "/person"
| name | age |
| John | 21 |

知道吗,Cucumber 如何将步骤数据映射到子成员变量(如本例中的地址和城市)?

最佳答案

我想您会在这里找到答案:https://github.com/cucumber/cucumber/tree/master/datatable#custom-table-types 。您需要实现一个 TableTransformer。

表是 Cucumber 中的一种“奇怪”数据类型,例如与other +custom data types, that live in cucumber expressions相比

关于java - 如何将 Gherkin 步骤定义数据映射到 Cucumber 中的 Java 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51689941/

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