Получение значения из элемента ответа с помощью GPath и Rest Assured

Я хочу получить значение status из своего ответа. Так что я могу это утверждать. Я использую Java и безмятежность BDD.

Ответ

{
    "locationType": "STORE",
    "locationId": "0003",
    "events": {
        "66e326db-fbfb-4f6e-9d2b-9425e7test5": {
            "status": "BOOKING_OPEN"
        }
    }
}

Итак, здесь event id (66e326db-fbfb-4f6e-9d2b-9425e7test5) является динамическим, что означает, что при каждом запуске этот UUID будет изменяться.

Код

Response response = SerenityRest.lastResponse();
        final ValidatableResponse validatableResponse = response.then();
        validatableResponse.assertThat().body("events.*.status", containsString(expectedResponse));

Когда я запускаю это, я получаю Нераспознанное исключение от serenity BDD. Я думаю, что есть проблема с переходом в JSON.
Может ли кто-нибудь помочь мне понять ценность статуса здесь? В данном случае я ищу BOOKING_OPEN


person Aishu    schedule 31.03.2021    source источник
comment
Разве ваш body("events") не возвращает вам список событий? Попробуйте сначала повторить их и достигнуть status для каждого события после.   -  person Lia    schedule 03.04.2021


Ответы (1)


Я думаю, вам следует сохранить UUID как переменную и изменить свой локатор в своем ответе.

response.getBody().jsonPath().get("events."+yourUUID+".status");
person Joe Phan    schedule 07.04.2021