概括
这是 Citrus 中的一个错误。正如我在评论中提到的,我已经找到了这个错误,请参阅GitHub 问题。
我还修复了这个错误并打开了一个GitHub Pull Request。但是,Citrus 的主要维护者可能需要几周的时间来审核我的更改,因为他目前正在从事不同的项目。
我很肯定该修复程序将包含在下一个 Citrus 维护版本2.7.3
中。
笔记
仅当某些值是重复条目时才会出现此错误,因为代码片段使用 a Set
,根据定义,它不能保存重复条目。
示例(从 GitHub 问题复制)
{
"test_array": [
{
"key_with_identical_values": "identical_value",
"key_with_unique_values": "unique_value"
},
{
"key_with_identical_values": "identical_value",
"key_with_unique_values": "different_unique_value"
}
]
}
鉴于 Citrus 验证如下:
<receive endpoint="testServer">
<message type="json">
<validate>
<json-path expression="$..key_with_unique_values" value="@assertThat(hasSize(2))@"/>
<json-path expression="$..key_with_identical_values" value="@assertThat(hasSize(2))@"/>
</validate>
</message>
</receive>
即使两个表达式的 JSONPath 数组的大小为2
(["unique_value", "different_unique_value"]
和),对于带有消息["identical_value", "identical_value"]
的表达式,验证也会失败:$..key_with_identical_values
Expected: a collection with size <2>
but: collection size was <1>