java - 有没有一种方法可以在没有特定顺序的情况下测试集合中的元素?

标签 java rest rest-assured

以下是我现在测试集合元素的方法:

.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 in 来验证 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")). ..

关于java - 有没有一种方法可以在没有特定顺序的情况下测试集合中的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29999538/

相关文章:

java - 多线程中面临的问题

Java如何添加一个排除特定数字的随机生成器?

java - 如何使用 REST API 在 Jira 中创建问题?

java - 如何使用 Rest assured 验证数组中元素的正确值

java - 如何配置一个eclipselink JTA序列连接池

java - SWT Combobox addSelectionListener() 的问题

java - 如何验证 DTO 中的枚举?

rest - 使用 linkedin API v2 获取关注者数量

java - 确保 cookie 或授权 header 保持最新

java - 多文件上传放心