Rest-Assured - утверждение тела json для набора значений в списке независимо от положения

Я использую rest-Assured для тестирования API для отдыха. У меня есть ответ json, который возвращает массив объектов. Я хочу убедиться, что он содержит объекты с определенным тестом значений. Проверьте следующий пример:

Пример JSON:

{
    "contents" : [
         {  
              "field1" : "value1",
              "field2" : "value2"
         },
         {  
              "field1" : "value3",
              "field2" : "value4"
         }
    ]
}

Как мне написать утверждение тела, чтобы я мог проверить, что независимо от позиции у меня есть одна запись с:

value1 & value2 в каждом соответствующем поле и другая запись со значением3 & value4.

...get ("/myEndpoint" )
.then()
.body ( "contents.?????", contains...)

1 ответ

Зависит от того, что вы подразумеваете под "независимо от позиции".

Если вы имеете в виду независимо от положения в contents но важно что field1 указан ранее field2 Вы можете сделать так:

when().
        get("/myEndpoint").
then().
        root("contents.any { it == ['field1':'%s', 'field2':'%s'] }").
        body(withArgs("value1", "value2"), is(true)).
        body(withArgs("value3", "value4"), is(true));

Если вам все равно, если field1 указан ранее field2 Вы можете сделать так:

when().
        get("/myEndpoint").
then().
        root("contents").
        body("", hasItems(hasEntry("field2", "value2"), hasEntry("field1", "value1")),
             "", hasItems(hasEntry("field1", "value3"), hasEntry("field2", "value4")));

Вы можете прочитать о "корневых путях" здесь.

Другие вопросы по тегам