Karate 检查数组是否只包含一次特定对象

Karate 检查数组是否只包含一次特定对象,karate,Karate,考虑到以下输入: * def response = [{ a: 1 }, { a: 2 }] * def item = { a: 1 } 如何检查项目在响应中只出现一次?由于不太常见,因此没有直接的方法。通过过滤列表,然后使用仅包含,可以分两步完成此操作 * def response = [{ a: 1 }, { a: 2 }] * def item = { a: 1 } * match response contains item * def fun = function(x){ retu

考虑到以下输入:

* def response = [{ a: 1 }, { a: 2 }]
* def item = { a: 1 }

如何检查
项目
响应
中只出现一次?

由于不太常见,因此没有直接的方法。通过过滤列表,然后使用
仅包含
,可以分两步完成此操作

* def response = [{ a: 1 }, { a: 2 }]
* def item = { a: 1 }
* match response contains item

* def fun = function(x){ return karate.match(x, item).pass }
* def filt = karate.filter(response, fun)
* match filt contains only item

这对我不起作用,因为我想检查部分对象是否匹配。请查看我的编辑。可能我的问题不够清楚,但没有必要打开新问题,因为这是我想用当前问题解决的问题。从文档中可以看出:“一个非常有用的功能是能够检查数组是否包含包含提供的密钥子集的对象,而不必指定完整的JSON”。这就是为什么我使用
匹配列表包含“#”(^msg)
。但我还要检查整个列表中是否只有一个部分匹配。如果我仍然不够清楚,我们可以继续聊天。@helleye是的,你的问题不够清楚,我认为你的编辑从根本上改变了这个问题。只需打开一个新问题,它将占用您一秒钟的时间^ ^我已根据您的答案更新了问题,现在一切看起来都正常。