Karate &引用;“实际”不包含“预期”;当使用“时”;!包含“深”;

Karate &引用;“实际”不包含“预期”;当使用“时”;!包含“深”;,karate,Karate,尝试使用检查某些数组内容时,我收到一些意外行为和奇怪的错误消息!空手道中包含深沉的。我正在尝试验证我的人物对象列表是否包含Alice的对象,但不包含Charlie的对象: * def people = [ {"name": "Alice", "phone": 123}, {"name": "Bob", "phone": 456} ] * def alice = { "

尝试使用
检查某些数组内容时,我收到一些意外行为和奇怪的错误消息!空手道中包含深沉的
。我正在尝试验证我的人物对象列表是否包含Alice的对象,但不包含Charlie的对象:

* def people = [ {"name": "Alice", "phone": 123}, {"name": "Bob", "phone": 456} ]
* def alice = { "name": "Alice" }
* def charlie = { "name": "Charlie" }

# assert Alice is present and Charlie is not

# all of these work
* match people contains deep alice
* match people == '#(^+alice)'
* match people != '#(^+charlie)'
* match each people[*] !contains charlie

# but this doesn't
* match people !contains deep charlie
最后一次检查失败:

match failed: CONTAINS_DEEP
  $ | actual does not contain expected | actual array does not contain expected item - {"name":"Charlie"} (LIST:MAP)
  [{"name":"Alice","phone":123},{"name":"Bob","phone":456}]
  {"name":"Charlie"}

    $[1] | actual does not contain expected | all key-values did not match, expected has un-matched keys - [name] (MAP:MAP)
    {"name":"Bob","phone":456}
    {"name":"Charlie"}

      $[1].name | not equal (STRING:STRING)
      'Bob'
      'Charlie'

        $[0] | actual does not contain expected | all key-values did not match, expected has un-matched keys - [name] (MAP:MAP)
        {"name":"Alice","phone":123}
        {"name":"Charlie"}

          $[0].name | not equal (STRING:STRING)
          'Alice'
          'Charlie'
这看起来像是我所期望的
包含的
,所以
似乎在这里被忽略了?这是一个bug,还是将
包含deep
组合在一起!包含
太乐观了(我注意到文档中只单独提到了它们)


(在第二种情况下,是否有可能简单地否定整个
匹配?)

这将得到您想要的:

* match each people !contains charlie
因此,如果在阵列上操作,建议使用
匹配每个

是的,我不这么认为!实现了contains deep
——我只想说,非常欢迎您贡献代码来修复此问题或错误消息——或者提供文档来通知用户此限制