0
這裏是我現在如何測試一個集合的元素:有沒有辦法在沒有特定順序的情況下測試集合中的元素?
.then()
.spec(userSpec("users[0]", first))
.spec(userSpec("users[1]", second))
的這裏的問題是,測試依賴於要素的特定順序。
我正在尋找一種方法來測試集合中的元素,而不被綁定到它們的順序並找不到任何。我錯過了什麼嗎?
這裏是我現在如何測試一個集合的元素:有沒有辦法在沒有特定順序的情況下測試集合中的元素?
.then()
.spec(userSpec("users[0]", first))
.spec(userSpec("users[1]", second))
的這裏的問題是,測試依賴於要素的特定順序。
我正在尋找一種方法來測試集合中的元素,而不被綁定到它們的順序並找不到任何。我錯過了什麼嗎?
您可能需要查看GPath(Groovy表達式語言)。使用GPath可以識別特定的用戶。例如,讓我們說,從服務器返回的JSON文檔看起來是這樣的:
{
"users":[
{
"id":0,
"name":"Jane"
},
{
"id":1,
"name":"John"
}
]
}
然後可以使用GPATH的驗證,ID爲0的用戶名「簡」,並與ID等於用戶1被稱爲「約翰」:
then().
body("users.find { it.id == 0 }.name", equalTo("Jane")).
body("users.find { it.id == 1 }.name", equalTo("John")). ..
這可以變得更可重用通過使用根路徑:
then().
rootPath("users.find { it.id == %d }.name").
body(withArgs(0), equalTo("Jane")).
body(withArgs(1), equalTo("John")). ..
感謝一大堆! –