【问题标题】:Karate Schema validation, does it work with nested arrays when using match contains assertion?空手道模式验证,在使用匹配包含断言时它是否适用于嵌套数组?
【发布时间】:2019-01-18 17:04:16
【问题描述】:

我试图通过仅检查某些元素来对 json 对象使用匹配项。 Json 对象包含一个嵌套数组,这似乎是测试失败的根本原因。似乎对嵌套数组中的键:值使用“匹配包含”断言无法按预期工作并引发错误。

我尝试在第一级键上使用“匹配包含”并且效果很好,但是当尝试匹配嵌套数组中的键时,我收到以下错误消息:原因:实际值的键多于 1 个预计

* def json = { id: 1, priority: 1, compRound: { id: 1, comp_id: 89 } }
* match json contains
"""
{
  id: '#number',
  priority: '#number',
  compRound: {
    id: '#number'
  }
}
"""

当我使用match contains 断言时,我希望测试能够通过,但看起来空手道希望嵌套数组中的所有键:值都存在。

【问题讨论】:

    标签: karate


    【解决方案1】:

    请仔细阅读这部分文档:https://github.com/intuit/karate#contains-short-cuts

    * def json = { id: 1, priority: 1, compRound: { id: 1, comp_id: 89 } }
    * def compRound = { id: '#number' }
    * match json == { id: '#number', priority: '#number', compRound: '#(^compRound)' }
    

    【讨论】:

    • 我现在已将其标记为已接受 :) @Peter Thomas 我有一个关于可能会或可能不会出现在有效负载中的节点的问题。如果节点存在,有没有办法进行匹配,如果不存在则忽略匹配?请让我知道我是否应该为此创建一个新问题。
    • @Rodbailey 检查文档的这一部分是否回答了您的问题,否则请提出新问题:github.com/intuit/karate#optional-fields
    猜你喜欢
    • 1970-01-01
    • 2019-05-22
    • 2022-11-23
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 2021-08-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多