请假设以下回复
{
"animals": [
{
"name": "hobba",
"embeddedData": {
"age": "3",
"color": "white"
}
},
{
"name": "obba",
"embeddedData": {
"age": "1",
"color": "yellow"
}
}
]
}
我需要断言数组中元素的存在是否具有特定值。我就是这样做的:
JsonPath jsonPath = response.jsonPath();
Assert.assertNotNull("Error message", jsonPath .param("name", "hobba").param("age", "3").param("color", "white").get("animals.find { a -> a.name == name && a.embeddedData.age == age && a.embeddedData.color == color"));
如您所见,我必须在我需要断言它的每个元素之前键入a.embeddedData
。这只是一个例子,因为将有许多元素来断言它们的值。
是否有更易读和循环友好的方法来执行此操作?
另外,如果embeddedData
或animals
中有数组,我怎样才能对animals
中的每个元素执行断言?
答案 0 :(得分:1)
您可以使用内置断言功能和匹配器检查正文:
.then()
.assertThat()
.root("animals.embeddedData")
.body("age", Every.everyItem(Matchers.notNullValue()))
.body("color", Every.everyItem(Matchers.notNullValue()))