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")));
Вы можете прочитать о "корневых путях" здесь.