如何在空手道中匹配可选的嵌套 JSON 对象

问题描述 投票:0回答:1

我正在尝试匹配可能具有三个可选键中任意一个的响应,这些键具有相同的 JSON 对象模式,但可选语法似乎不适用于这种情况。 Karate 是否支持我正在寻找的功能?当所有三个模式都存在时它可以工作,但当其中任何一个模式缺失时它就不起作用。

Scenario:
  * def schema_optional =
  """
  {
    "a": ##string,
    "b": ##number
  }
  """
  * def schema =
  """
  {
    "c": ##(schema_optional),
    "d": ##(schema_optional),
    "e": ##(schema_optional)
  }
  """
  * def result = 
  """
  {
    "d": {
      "a": "hi",
      "b": 19
    }
  }
  """
  * match result == schema

错误是

match failed: EQUALS
$ | not equal | actual does not contain key - 'c' (MAP:MAP)
testing cucumber karate optional-parameters
1个回答
0
投票

进行此更改:

* def schema_optional =
"""
({
  "a": '##string',
  "b": '##number'
})
"""
* def schema =
"""
({
  "c": '##(schema_optional)',
  "d": '##(schema_optional)',
  "e": '##(schema_optional)'
})
"""
* def result = 
"""
{
  "d": {
    "a": "hi",
    "b": 19
  }
}
"""
* match result == schema
© www.soinside.com 2019 - 2024. All rights reserved.