gpt4 book ai didi

java - 确保休息 : how to test object of type "Set" in body?

转载 作者:太空宇宙 更新时间:2023-11-04 10:42:18 25 4
gpt4 key购买 nike

我想使用 REST Assured 断言响应正文。但目前我还不能这样做。我收到以下错误消息。

实现细节如下:

BannerDto resultBannerDto = given()
.contentType("application/json")
.body(bannerAddDto)
.when()
.post("/api/v1/admin/banners")
.then()
.statusCode(HttpStatus.OK.value())
.contentType(ContentType.JSON)
.body("name", equalTo("banner A"))
//this line make error:
.body("regions", equalTo(regionsSet.toString()))
.extract().as(BannerDto.class);

错误是:

java.lang.AssertionError: 1 expectation failed.
JSON path regions does not match.
Expected: [1, 2]
Actual: [1, 2]

参数regionSet为:

    private Set<Long> regionsSet = new HashSet<>();
regionsSet.add(1l);
regionsSet.add(2l);

服务的响应如下:

{regions=[1, 2],endDate=2017-05-01T22:00:00,productIds=[],bannerId=15,...

最佳答案

查看您的响应正文后,解决方案非常简单。你想做什么:

.body("regions", equalTo(regionsSet.toString()))

这里正在从当前是 JsonArray 的响应正文中收集 regions 的数据,并将其与导致您的案例失败的字符串进行比较。下面我给出了一些代码来澄清您的问题。在这里我正在使用 Gson 库:

public class Simple {

public static void main(String[] arg) {
Set<Long> regionsSet = new LinkedHashSet<>();
regionsSet.add(1l);
regionsSet.add(2l);
Gson gson = new Gson();
JsonArray jr = new JsonArray();
jr.add(1);
jr.add(2);
System.out.println("Not Equal now : " + jr.equals(gson.toJson(regionsSet).toString()));
System.out.println("Equal now : " + jr.toString().equals(gson.toJson(regionsSet).toString()));
}
}

示例输出:

Not Equal now : false
Equal now : true

希望这能澄清您的问题并让您了解如何继续。

关于java - 确保休息 : how to test object of type "Set" in body?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48841235/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com