Hamcrest匹配器json子阵列:有没有办法使用hasItems来查找子阵列中的项目?

时间:2015-06-03 00:45:13

标签: json matcher hamcrest rest-assured

例如,假设我有以下json响应:

{
     "0": {
              "field1" : 5
              "field2" : 10
          }
     "1": {
              "field1" : 1
              "field2" : 10
          }
}

有没有办法验证field1的值是5还是1?我被困在.body声明中:

.body("[0].field1", Matchers.hasItems(1));

我完全不可能完全理解hasItems应该做什么,因为我尝试了很多[0],[*]和字段名称的组合,但没有一个能够工作。我也希望有一篇关于hamcrest和json的用法文章,它不仅涵盖了最基本的案例。有谁知道我要求的是否可能?

感谢阅读。

1 个答案:

答案 0 :(得分:0)

首先,你的" json文件"无效。它应该看起来像这样:

{
     "0": {
              "field1" : 5,
              "field2" : 10
          },
     "1": {
              "field1" : 1,
              "field2" : 10
          }
}

由于您定位的路径只匹配单个元素,因此您应该使用equalTo(或is)Hamcrest匹配器:

.body("0.field1", Matchers.equalTo(5));

请注意,REST Assured不会使用" Stefan Goessner" JsonPath语法。它使用Groovy GPath表达式语言。