Hamcrest(Java)错误

问题描述 投票:0回答:1

我在测试中使用 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 上的代码。但仍然没有找到有关错误格式的解释。谢谢你

java testing rest-assured hamcrest
1个回答
0
投票

您的响应正文不包含属性

id
,但它是一个包含对象的数组(每个对象都有一个
id
属性)。

您可能需要一个 JSONPath(例如

$.[*].id
$[*].id
*.id
)来提取和过滤嵌套对象的 id。

© www.soinside.com 2019 - 2024. All rights reserved.