使用REST Assured,如何检查响应的json对象类型数组中是否存在字段?

时间:2019-01-08 10:29:21

标签: json rest-assured jsonpath web-api-testing rest-assured-jsonpath

我需要验证以下响应是否包含某些字段。我对字段值不感兴趣-只是存在键。 例如,我想检查这种响应类型中是否存在键“ id”。我该怎么办?

[  
   {  
      "id":"1",
      "title":"Title",
      "details":"details",
      "benefit":"Welcome",
      "expirationTimestamp":1549995900,
      "notice":"some text",     
   }
]

如果我这样做

given()
  .spec(reqSpec).
when()
  .get().
then()
  .body("$", hasKey("id"));

我收到这样的错误:

java.lang.AssertionError: 1 expectation failed.
JSON path $ doesn't match.
Expected: map containing ["id"->ANYTHING]
  Actual: [{blabla=something, id=1, details=details, etc=etc}]

请,有人可以向我解释这应该如何工作吗?

1 个答案:

答案 0 :(得分:1)

尝试一下:

given()
  .spec(reqSpec).
when()
  .get().
then()
  .body("[0]", hasKey("id"));

Groovy GPath用于“确保放心”。您可以查看他们的指南here

还有一个很好的教程here