Все привет.
Пишу api тесты и столкнулся с проблемой при валидации json схемы и json.
Есть к примеру у меня класс
public class Dog {
@Column(name = "dog_id")
@Getter @Setter private int id;
@Column(name = "dog_name")
@Getter @Setter private String name;
}
При помощи библиотеки jackson я строю схему json данного класса
private static String getJsonSchema(Class<?> clazz) {
ObjectMapper objectMapper = new ObjectMapper();
JsonSchemaConfig config = JsonSchemaConfig.nullableJsonSchemaDraft4();
JsonSchemaGenerator generator = new JsonSchemaGenerator(objectMapper, config);
JsonNode jsonNode = generator.generateJsonSchema(clazz);
return jsonNode.toString();
}
После этого прохожу валидацию
@Step("Check response matches json schema")
public static void checkResponseJsonSchema(Response response, @Parameter String schema) {
Allure.addAttachment("Response", response.asString());
LOGGER.debug("Entity schema is:" + schema);
response.then().assertThat().body(JsonSchemaValidator.matchesJsonSchema(schema));
}
сам response возвращает что то типо
{"id":2344,"name":"name"}
Суть самого вопроса, попробую семитировать случайное удаление параметра из ответа, путем добавления нового поля в классе, к примеру добавлю поле gender.
response все так же будет отдавать json с 2 параметрами, а в схеме уже будет 3 параметра, но при валидации ошибки не произойдет и я не пойму почему?