0
請假設以下響應如何縮短用於標識數組中單個元素的json路徑?
{
"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
中的每個元素?
但是,這並不爲'age'&'color'每個'animal'元素斷言值加在一起。我的意思是我需要確保有一個元素'age == 3 && color == white'。這是一個單一的元素。您的代碼爲每個元素單獨聲明「age」的值,然後爲每個元素單獨聲明「color」。 –
只需用'animals [0] .embeddedData'和'everyItem'替換'animalss.embeddedData'與所需的匹配器 – RocketRaccoon
將上一條評論中的信息與'response.jsonPath()。getList(「animals」)。size() ;'解決了我的情況。謝謝。 –