如何在响应中存在嵌套的JSON时使用匹配来验证JSON密钥的子集

时间:2017-11-27 12:46:40

标签: json karate

从回复中,我提取了这样一个子集。

{
  "base": {
    "first": {
      "code": "1",
      "description": "Its First"
    },
    "second": {
      "code": "2",
      "description": "Its Second"
    },
    "default": {
      "last": {
        "code": "last",
        "description": "No"
      }
    }
  }
}

如果我需要使用进行单一验证并匹配X包含来检查

  1. 首先内部代码为1
  2. 内部默认 - 最后代码是最后一个吗?
  3. 我没有使用json路径进行每次验证,而是尝试提取特定部分并对其进行验证。如果没有嵌套的json路径,我可以使用并匹配X包含非常容易,但是当有嵌套的jsons时,我无法做到。

1 个答案:

答案 0 :(得分:1)

这适合你吗?

* def first = get[0] response..first
* match first.code == '1'
* def last = get[0] response..default.last
* match last.code == 'last'

编辑:好看,你想要尽可能地压缩成一行,更重要的是能够在嵌套节点中做contains。就个人而言,我觉得这有时候不值得这么麻烦,但现在就去了。

另请参阅这些捷径:https://github.com/intuit/karate#contains-short-cuts

* def first = { code: "1" }
* match response.base.first contains first
* match response.base contains { first: '#(^first)' }
* def last = { code: 'last' }
* match response.base contains { first: '#(^first)', default: { last: '#(^last)' } }