使用 hamcrest 测试 json 结果,顺序无关

发布于 2025-01-11 18:33:49 字数 518 浏览 0 评论 0原文

我有一个返回以下类型主体结果的 API,我想在 java17 上使用 Hamcrest 对其进行测试。

[
    {
        "name": "name1",
        "version": "x.x.x"
    },
    {
        "name": "name2",
        "version": "y.y.y"
    }
]

我想测试一下我是否总是为 name1 获取 version =“xxx”,为 name2 获取 version =“yyy”。

以下代码有效,但我想要一个与顺序无关的测试,因为它考虑了元素的顺序:

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"));
);

I have an API that returns the following kind of body result, and I want to test it with Hamcrest on java17.

[
    {
        "name": "name1",
        "version": "x.x.x"
    },
    {
        "name": "name2",
        "version": "y.y.y"
    }
]

I woud like to test that I always get version = "x.x.x" for name1, and version = "y.y.y" for name2.

The following code works, but I would like a more order-agnostic test, as it takes into account the order of my elements:

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"));
);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

扭转时空 2025-01-18 18:33:49

这会起作用:

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

This would work:

.body("find {it.name == 'name1'}.version", is("x.x.x"))
.body("find {it.name == 'name2'}.version", is("y.y.y"));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文