Какой сейчас самый гибкий способ проверки json ответа?

Хочу разобраться, как настраивать ассерты для ожидаемого JSON гибко или же гибко настраивать сам JSON и игнорировать определённые поля. Context: java, api

Привет, я использую json-unit. Есть возможность настройки, что бы не отслеживать порядок в списках, так же, если есть часто меняющиеся данные в ответах заменить их на “твое поле”: “${json-unit.any-number}” и все. Мне подходит, работает со всеми библиотеками типа AssertJ и другими.

1 лайк

Спасибо за ответ, а можно примерчик как его обычно используете? Я так понимаю там все декларативно указывается?

Точнее вы потом поверх jsonunit делаете свой билдер чтобы разные ответы одной апишки проверять? Как его используете в плане архитектуры?

Не совсем понял вопрос, но постараюсь ответить.
Я использую бибилиотеку RestAssured для отправки запросов и получения ответов.
У меня есть к примеру описанный метод

    public static <T> T createAccount(CreateAccountRequest requestBody,
                                     Integer expectedStatusCode,
                                     Class<T> returnClazz) {

        given()
                        .body(requestBody)
                        .contentType(ContentType.JSON)
                        .post(API_URI + "/account")
                        .statusCode(expectedStatusCode)
                        .extract()
                        .response()
                        .as(returnClazz));
    }

и этот метод я уже использую для получения нужного мне класса с ответами.
К примеру у меня есть 2-а класа SuccessResponse и FailResponse.
Я их получаю использую метод выше. И это мой актуальный результат, а действительный который я планирую что бы был, я уже да билдером строю и их сравниваю и с Json-unit. Как то так.

то есть вот этот метод возвражает текст и его уже jsonunitom сравниваете?

Ну я не текст возвращаю, а обычно класс который из себя представляет JSON класс с билдером. И да его уже сравниваю с ожидаемым результатом с помощью Json-unit.

1 лайк

А я просто думал Json-unit работает с текстом а он прям по модельке проходится понял спасибо

Он умеет и с моделью прям, и если Stringoй передать JSON. Тут как тебе удобно

1 лайк