{
"message": "The given data was invalid.",
"errors": {
"client.email": [
"invalid email"
]
}
}
Мне нужно вытянуть “invalid email”.
Делал, вот так :
Map<String, String> message= response.jsonPath().getMap("errors");
String value = message.get("client.email");
Ошибка:java.lang.ClassCastException: class java.util.ArrayList cannot be cast to class java.lang.String (java.util.ArrayList and java.lang.String are in module java.base of loader ‘bootstrap’)
Возможно можно, через response.getBody() это сделать?
Eсли делаю вот так: response.then().assertThat().body("errors.client.email", equalTo("invalid email"));
Возвращает null
//@formatter:off
private static String data = "{\n"
+ " \"message\": \"The given data was invalid.\",\n"
+ " \"errors\": {\n"
+ " \"email\": [\n"
+ " \"invalid email\"\n"
+ " ]\n"
+ " }\n"
+ "}";
//@formatter:on
JsonPath jsonPath = new JsonPath(data);
assertThat(jsonPath.get("errors.email[0]"), containsString("invalid email"));
для того чтобы выполнить given() .when().get(baseUrl).then().body( - надо запускать веб сервер чтобы данные получать от него - сейчас честно говоря нет времени это делать