我一直在尝试使用空手道为我们的项目验证 JSON 模式。
做了一些研究后,我发现了一些与我正在寻找的内容相匹配的指针:
但是,针对最新的空手道框架版本 - 1.4.1.RC3尝试建议的解决方案,似乎仍然存在问题。
请参考下面的功能文件和错误输出。
我可以请求帮助我们找到针对此案例的正确解决方案吗?
Feature: JSON Schema validation
Background:
* def json =
"""
{
"foo": {
"bars": [
{ "barOne": "dc", "barTwos": [] },
{ "barOne": "dc", "barTwos": [{ title: 'blah' }] },
{ "barOne": "dc", "barTwos": [{ title: 'blah' }] },
{ "barOne": "dc", "barTwos": [{ title: 'blah' }] }
]
}
}
"""
* def barTwo = { title: '#string' }
* def bar =
"""
{ barOne: '#string', barTwos: '##[] barTwo' }
"""
Scenario: Validate JSON Schema
* match json.foo.bars == '#[] bar'
错误:
匹配失败:等于 $ |匹配索引 0 处的每个失败 (LIST:MAP) [{"barOne":"dc","barTwos":[]},{"barOne":"dc","barTwos":[{"title":"blah"}]},{"barOne":" dc","barTwos":[{"title":"blah"}]},{"barOne":"dc","barTwos":[{"title":"blah"}]}] {"barOne":"#string","barTwos":"##[] barTwo"}
$[0] | not equal | match failed for name: 'barTwos' (MAP:MAP)
{"barOne":"dc","barTwos":[]}
{"barOne":"#string","barTwos":"##[] barTwo"}
$[0].barTwos | match each failed, empty array / list (LIST:MAP)
[]
{"title":"#string"}
考虑到这个错误 - https://github.com/karatelabs/karate/issues/346 已在空手道框架v0.8.0中修复,我们认为它应该在最新的空手道框架中开箱即用1.4.1.RC3
查看 1.4.1.RC2 是否有效。 RC3 有一个与此问题相关的更改仍在讨论中:https://github.com/karatelabs/karate/issues/2364