如何将小黄瓜步骤定义数据映射到 Cucumber 中的 Java 对象?
How to map gherkin step definition data to a Java object in Cucumber?
我有以下三个 classes:
class City {
String name;
String code;
}
class Address {
String street;
City city;
}
class Person {
String name;
int age;
Address address;
}
现在,我有 API 给 POST 一个人。
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 class 中,创建了以下方法来将此步骤映射到它上面:
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 中的 'odd' 数据类型,例如与 other +custom data types, that live in cucumber expressions
相比
我有以下三个 classes:
class City {
String name;
String code;
}
class Address {
String street;
City city;
}
class Person {
String name;
int age;
Address address;
}
现在,我有 API 给 POST 一个人。
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 class 中,创建了以下方法来将此步骤映射到它上面:
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 中的 'odd' 数据类型,例如与 other +custom data types, that live in cucumber expressions
相比