我正在尝试匹配可能具有三个可选键中任意一个的响应,这些键具有相同的 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)
进行此更改:
* 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