使用 hamcrest 测试 json 结果,顺序不可知

Test json result with hamcrest, order agnostic

我有一个 API returns 以下类型的 body 结果,我想在 java17.

上用 Hamcrest 测试它
[
    {
        "name": "name1",
        "version": "x.x.x"
    },
    {
        "name": "name2",
        "version": "y.y.y"
    }
]

我想测试一下,对于 name1,我总是得到 version = "x.x.x",对于 name2,我总是得到 version = "y.y.y"。

以下代码有效,但我想要更多 order-agnostic 测试,因为它考虑了我的元素的顺序:

given()...when()...then()
   .body("name[0]", is("foo"))
   .body("version[0]", is("0.0.0"))
   .body("name[1]", is("bar"))
   .body("version[1]", is("1.1.1"));
);

这可行:

.body("find {it.name == 'name1'}.version", is("x.x.x"))
.body("find {it.name == 'name2'}.version", is("y.y.y"));