有没有一种方法可以在没有特定顺序的情况下测试集合中的元素?
Is there a way to test for elements in a collection without a specific order?
以下是我现在测试集合元素的方式:
.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 的用户的名称为 "Jane",id 等于 1 的用户名为 "John":
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")). ..
以下是我现在测试集合元素的方式:
.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 的用户的名称为 "Jane",id 等于 1 的用户名为 "John":
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")). ..