Преобразование тела ответа теста Кваркуса

#testing #junit #quarkus #rest-assured

Вопрос:

Я пытаюсь протестировать свое приложение Quarkus. Я хочу проверить, что ответ больше 0, проблема в том, что конечная точка, которую я вызываю, возвращает строку, а не число. Как я могу преобразовать ответ в число и проверить, что оно больше 0?

    @Test
   void getAdminListSize() {
       given()
               .when()
               .header("Authorization", token_admin)
               .get(PATH   "/get?listSize=true")
               .then()
               .statusCode(200)
               .body(greaterThan(0))
       ;
   }
 

Вот ответ, который я получаю: «28357».
Это ошибка, которую я получаю:

 java.lang.AssertionError: 1 expectation failed.
Response body doesn't match expectation.
Expected: a value greater than <0>
Actual: 28357
 

Ответ №1:

Просто извлеките тело в переменную и работайте с ней

 @Test
   void getAdminListSize() {
       String s = given()
               .when()
               .header("Authorization", token_admin)
               .get(PATH   "/get?listSize=true")
               .then()
               .assertThat()
               .statusCode(200)
               .extract()
               .body()
               .asString();

       
              convert s into a integer and do the assert
   }
 

Другой вариант-использовать .as(Clazz.class) и работать с вашим dto, если он у вас есть