我在测试中使用 REST Assured 和 Hamcrest 匹配器:
given()
//...
.assertThat()
.body("id", arrayContaining(job1.getId(), job2.getId()))
.statusCode(200);
运行它们后,我收到以下错误:
JSON path id doesn't match.
Expected: is [<70a1deec-ce17-4064-8037-5e546d3ed329>, <7ccd5ad0-7425-4df5-be64-bb8584da5d96>]
Actual: <[70a1deec-ce17-4064-8037-5e546d3ed329, 7ccd5ad0-7425-4df5-be64-bb8584da5d96]>
响应的格式如下:
[
{
"id": "some UUID 1"
"other_properties": ...
},
{
"id": "some UUID 1"
"other_properties": ...
}
]
我的问题是三角括号是什么意思?以及使用哪个匹配器更好。我知道我可能只是在谷歌上搜索错误,但我花了几天时间在谷歌上搜索、阅读文档并检查 github 上的代码。但仍然没有找到有关错误格式的解释。谢谢你
您的响应正文不包含属性
id
,但它是一个包含对象的数组(每个对象都有一个 id
属性)。
您可能需要一个 JSONPath(例如
$.[*].id
、$[*].id
或 *.id
)来提取和过滤嵌套对象的 id。