RestAssured、POJO 和处理列表
RestAssured, POJO and dealing with lists
我正在为 API 编写测试,在一个端点,我得到 JOSN 作为响应,将几个数组合并为一个数组。
我可以制作 POJO class 将那些 array/arrays 映射到 class 对象吗?
例如,JSON 的响应如下所示:
{
"total": 55,
"limit": 500,
"skip": 0,
"data": [
{
"id": 13,
"email": "probe@gmail.com",
"phone": "121-121-123",
"firstName": "Prob",
"lastName": "Buraz",
"platforms": [
{
"id": 3,
"name": "Dowe Assis",
"url": "ins.probe.com",
"user_platforms": {
"id": 496,
"userId": 13,
"platformId": 100,
"user_id": 82
}
}
], .....
等等。我想我可以使用这个 class 将响应映射到 POJO:
@JsonIgnoreProperties(ignoreUnknown = true)
public class GetUsers {
public Integer total;
public Integer limit;
public List<DataReference> data;
@JsonIgnoreProperties(ignoreUnknown = true)
public static class DataReference{
public int id;
public String email;
public String phone;
public String firstName;
public String lastName;
public List<Platform> platforms;
@JsonIgnoreProperties(ignoreUnknown = true)
public static class Platform{
public Integer id;
public String name;
public String url;
}
}
}
但是在测试代码中我只能得到数据元素。平台元素是不可触及的:
GetUsers users = given()
.header("Authorization",
"Bearer " + adminToken) //
.when()
.get()
.then()//.log().all()
.statusCode(200)//.log().all()
.extract().as(GetUsers.class);
我可以像这样检查数组数据的值:
assertThat(users.data).extracting(user -> user.email).contains("probe1@gmail.com", probe+2@gmail.com, ... );
但我无法访问 users.data.platforms.name 或 users.data.platforms.id 等的任何值。
我如何才能为其中一位用户访问平台元素?
users.data.platforms.name
我如何为数据数组中列出的一个或所有用户执行此操作(访问平台数据)?
您使用哪个库进行 JSON POJO 映射?
如果映射没有错误,则可以使用以下方法访问平台变量。
在 POJO
中添加 getter setter
users.getData.getindex(0).getplatforms.getindex(0).getid();
users 是 GetUsers Class 的对象,用于映射 JSON 响应。
我正在为 API 编写测试,在一个端点,我得到 JOSN 作为响应,将几个数组合并为一个数组。 我可以制作 POJO class 将那些 array/arrays 映射到 class 对象吗?
例如,JSON 的响应如下所示:
{
"total": 55,
"limit": 500,
"skip": 0,
"data": [
{
"id": 13,
"email": "probe@gmail.com",
"phone": "121-121-123",
"firstName": "Prob",
"lastName": "Buraz",
"platforms": [
{
"id": 3,
"name": "Dowe Assis",
"url": "ins.probe.com",
"user_platforms": {
"id": 496,
"userId": 13,
"platformId": 100,
"user_id": 82
}
}
], .....
等等。我想我可以使用这个 class 将响应映射到 POJO:
@JsonIgnoreProperties(ignoreUnknown = true)
public class GetUsers {
public Integer total;
public Integer limit;
public List<DataReference> data;
@JsonIgnoreProperties(ignoreUnknown = true)
public static class DataReference{
public int id;
public String email;
public String phone;
public String firstName;
public String lastName;
public List<Platform> platforms;
@JsonIgnoreProperties(ignoreUnknown = true)
public static class Platform{
public Integer id;
public String name;
public String url;
}
}
}
但是在测试代码中我只能得到数据元素。平台元素是不可触及的:
GetUsers users = given()
.header("Authorization",
"Bearer " + adminToken) //
.when()
.get()
.then()//.log().all()
.statusCode(200)//.log().all()
.extract().as(GetUsers.class);
我可以像这样检查数组数据的值:
assertThat(users.data).extracting(user -> user.email).contains("probe1@gmail.com", probe+2@gmail.com, ... );
但我无法访问 users.data.platforms.name 或 users.data.platforms.id 等的任何值。
我如何才能为其中一位用户访问平台元素?
users.data.platforms.name
我如何为数据数组中列出的一个或所有用户执行此操作(访问平台数据)?
您使用哪个库进行 JSON POJO 映射? 如果映射没有错误,则可以使用以下方法访问平台变量。
在 POJO
中添加 getter setterusers.getData.getindex(0).getplatforms.getindex(0).getid();
users 是 GetUsers Class 的对象,用于映射 JSON 响应。