首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >"actual在使用“时不包含预期的”!包含深度“

"actual在使用“时不包含预期的”!包含深度“
EN

Stack Overflow用户
提问于 2021-04-25 19:25:56
回答 1查看 107关注 0票数 1

当我尝试用空手道中的!contains deep检查一些数组内容时,我得到了一些意想不到的行为和奇怪的错误信息。我正在尝试验证我的people对象列表是否包含一个针对Alice的对象,而不是针对查利的对象:

代码语言:javascript
复制
* 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

最后一次检查失败:

代码语言:javascript
复制
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'

这看起来就是我对contains的期望,所以这里似乎忽略了!?这是一个错误,还是将contains deep!contains组合在一起太乐观了(我注意到文档中只单独提到了它们)?

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-25 20:02:39

这会让你得到你想要的:

代码语言:javascript
复制
* match each people !contains charlie

因此,如果在数组上操作,建议首选match each

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67252838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档