我正在尝试创建一个测试来验证JSON Post的响应是否符合预期。
我正在尝试将JSON消息正文的POST测试到URL,然后依次发送文本消息,如果发送成功,它将以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\"}"));
}
Run Code Online (Sandbox Code Playgroud)
但是似乎正在得到这个例外
java.lang.IllegalStateException:您可以在POST中发送表单参数或正文内容,不能两者都发送!
我不确定是什么问题?
Restassured无法根据堆栈跟踪来解析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\"}"));
}
Run Code Online (Sandbox Code Playgroud)
另外,我没有在问题中找到其余服务的输出。例如,它返回一个json,{"resultMessage":"Message accepted"} 您应该以以下方式验证响应:
...
.body("resultMessage",equalTo("Message accepted"));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20440 次 |
| 最近记录: |