空手道 - 复杂的 JSON 模式验证无法按预期工作

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

我一直在尝试使用空手道为我们的项目验证 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

karate
1个回答
0
投票

查看 1.4.1.RC2 是否有效。 RC3 有一个与此问题相关的更改仍在讨论中:https://github.com/karatelabs/karate/issues/2364

© www.soinside.com 2019 - 2024. All rights reserved.