RestAssured, POJO и работа со списками - PullRequest
0 голосов
/ 09 апреля 2019

Я пишу тест для 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.platform.name или users.data.platforms.id и т. д.

Как получить доступ к элементу платформы для одного из пользователей?

users.data.platforms.name

Как я могу это сделать (получить доступ к данным платформ) для одного или для всех перечисленных пользователей в массиве данных?

1 Ответ

0 голосов
/ 12 апреля 2019

Какую библиотеку вы используете для отображения JSON POJO?Если при отображении нет ошибок, тогда к переменной платформы можно обратиться, используя следующую команду:

Добавить установщик получателя в POJO

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

users - это объект класса GetUsers, который используется для сопоставления ответа JSON.

...