Хочу разобраться, как настраивать ассерты для ожидаемого JSON гибко или же гибко настраивать сам JSON и игнорировать определённые поля. Context: java, api
Привет, я использую json-unit. Есть возможность настройки, что бы не отслеживать порядок в списках, так же, если есть часто меняющиеся данные в ответах заменить их на “твое поле”: “${json-unit.any-number}” и все. Мне подходит, работает со всеми библиотеками типа AssertJ и другими.
Спасибо за ответ, а можно примерчик как его обычно используете? Я так понимаю там все декларативно указывается?
Точнее вы потом поверх 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.
А я просто думал Json-unit работает с текстом а он прям по модельке проходится понял спасибо
Он умеет и с моделью прям, и если Stringoй передать JSON. Тут как тебе удобно