gpt4 book ai didi

java - 使用 RestAssured 的 JSON POST

转载 作者:搜寻专家 更新时间:2023-10-31 19:44:44 26 4
gpt4 key购买 nike

我正在尝试创建一个测试来验证 JSON Post 的响应是否符合预期。

我正在尝试测试 JSON 消息正文到 URL 的 POST,然后依次发送文本消息,如果成功,它会再次以 JSON 格式发送成功的响应。

我的测试如下

public void simpleTest() {

String myJson = "{\"phoneNumber\":\"353837986524\", \"messageContent\":\"test\"}";
given()
.port(31111) // port number
.header("Content-Type", "application/json")
.body(myJson)
.when()
.post("/testenvironment/text/send")
.then().assertThat()
.body("message", equalTo("{\"resultMessage\":\"Message accepted\"}"));
}

但似乎得到了这个异常(exception)

java.lang.IllegalStateException: You can either send form parameters OR body content in POST, not both!

我不确定问题出在哪里?

最佳答案

Resassured 无法根据堆栈跟踪解析 Json。我用 org.json jar,这是处理大 json 输入的更优雅的方式。 java中还有其他json处理的实现,可以根据自己的喜好使用。

进入你的代码:

public void simpleTest() {

// use org.json JSONObject to define your json
JSONObject jsonObj = new JSONObject()
.put("phoneNumber","353837986524")
.put("messageContent","test");

given()
.port(31111) // port number
.contentType("application/json") //another way to specify content type
.body(jsonObj.toString()) // use jsonObj toString method
.when()
.post("/testenvironment/text/send")
.then()
.assertThat()
.body("message", equalTo("{\"resultMessage\":\"Message accepted\"}"));
}

此外,我没有在问题中找到其余服务的输出。例如它返回一个 json {"resultMessage":"Message accepted"} 你应该通过以下方式验证响应:

...
.body("resultMessage",equalTo("Message accepted"));

关于java - 使用 RestAssured 的 JSON POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34882203/

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