【问题标题】:RestAssured, POJO and dealing with listsRestAssured、POJO 和处理列表
【发布时间】:2019-08-30 22:42:47
【问题描述】:

我正在为 API 编写测试,并且在一个端点上我得到 JOSN 以将几个数组合并到一个数组中。 我可以制作将这些数组/数组映射到类对象的 POJO 类吗?

例如,响应中的 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
                }
            }
        ], .....

等等。我想我可以使用这个类将响应映射到 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.nameusers.data.platforms.id 等的任何值。

我如何才能访问其中一位用户的平台元素?

users.data.platforms.name

我如何为数据数组中的一个或所有列出的用户做到这一点(访问平台数据)?

【问题讨论】:

    标签: pojo rest-assured jsonschema2pojo


    【解决方案1】:

    您使用哪个库进行 JSON POJO 映射? 如果映射没有错误,则可以使用以下方法访问平台变量。

    在 POJO 中添加 getter setter

    users.getData.getindex(0).getplatforms.getindex(0).getid();
    

    users 是 GetUsers 类的对象,用于映射 JSON 响应。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-20
      • 2013-01-06
      相关资源
      最近更新 更多