Как я могу использовать блок then () с RestAssured при использовании классов POJO? - PullRequest
0 голосов
/ 25 февраля 2020

Во время работы над RestAssured я наткнулся на концепцию сериализации и десериализации (классы POJO), чтобы прочитать и проверить ответ. Я прошел некоторый урок и смог создать класс POJO на основе моего ответа.

Однако, когда я использую ссылку на класс POJO в своих тестах, я не могу использовать блок then () для разных утверждений. Ниже детали могут прояснить ситуацию немного больше:

TestMethod без POJO:

public void listUsers() {
        RestAssured.baseURI="https://reqres.in/";

        Response res = RestAssured.given()
        .contentType("application/json")
        .queryParam("page", 2)
        .when()
        .get("/api/users")
        .then()
        .assertThat().statusCode(200).and()
        .body("page", Matchers.equalTo(2)).and()
        .body("total", Matchers.greaterThanOrEqualTo(1))
        .body("data.email", Matchers.hasItem("george.edwards@reqres.in"))
        .extract().response();
        JsonPath jsonpath = new JsonPath(res.asString());
        System.out.println(jsonpath.get("data[0].email"));

    }

Метод тестирования с POJO:

public void listUserswithPOJO() {
        RestAssured.baseURI="https://reqres.in/";

        ListUsers res = RestAssured.given()
        .contentType("application/json")
        .queryParam("page", 2)
        .when()
        .get("/api/users").as(ListUsers.class);

        System.out.println(res.getData().get(1).getEmail());

    }

Класс тестирования:

@Test
    public void listUsersTest() {
        ReqResApi TS1 = new ReqResApi();
        TS1.listUserswithPOJO();
    }

Я хочу сохранить утверждения блока then, как и при использовании классов POJO. Когда я пытаюсь сделать это после as (ListUser.class), он выдает ошибку компиляции, что then () не определено для класса ListUser.

Есть ли способ, которым я могу использовать как класс POJO, так и блок then () в моих тестах с уверенностью?

1 Ответ

0 голосов
/ 27 февраля 2020

Это невозможно, поскольку типы возвращаемых данных у этих параметров разные.

MainPojo m1 =RestAssured.given().contentType("application/json").queryParam("page", 2).when().get("/api/users")
                .as(MainPojo.class)==> Return Type is ur Class, in this example Main Pojo

        System.out.println(m1.getData().get(0).getFirst_name());



 RestAssured.given().contentType("application/json").queryParam("page", 2).when()
                .get("/api/users").then().assertThat().statusCode(200).and().body("page", Matchers.equalTo(2)).and()
                .body("total", Matchers.greaterThanOrEqualTo(1))
                .body("data.email", Matchers.hasItem("george.edwards@reqres.in")).extract().response();---> Return Type is Response
...