Вы можете использовать утверждения пути JSON для проверки значений, однако в настоящее время вы не можете использовать его для проверки наличия самого пути. Например, если вы используете следующее:
JsonContent<MyTestObject> content = this.tester.write(new MyTestObject());
assertThat(content).hasEmptyJsonPathValue("myProperty");
Это пройдет как для {"myProperty": null}
, так и для {}
.
Если вы хотите проверить наличие свойства, но null
, вам нужно написать что-то вроде этого:
private Consumer<String> emptyButPresent(String path) {
return (json) -> {
try {
Object value = JsonPath.compile(path).read(json);
assertThat(value).as("value for " + path).isNull();
} catch(PathNotFoundException ex) {
throw new AssertionError("Expected " + path + " to be present", ex);
}
};
}
Затем вы можете сделать следующее:
assertThat(content.getJson()).satisfies(emptyButPresent("testProperty"));
Кстати, ваше утверждение строки также можно упростить до:
assertThat(content.toString()).doesNotContain("myProperty");