我正在尝试测试两个Rest API端点,一个是get,另一个是post。这个想法是get响应返回的响应体应该是帖子的主体。
我正在使用的代码:
RestAssured.baseURI = ROOT_URI;
RequestSpecification httpRequest =
RestAssured.given().header("Authorization", "Basic " + encodedString);
String endPoint="/v1/getworkers";
Response response = httpRequest.request(Method.GET, endPoint);
String responseBody = response.getBody().asString();
现在我得到的响应机构是:
{"workerDetails":
[
{"workerId":"TEST123456",
"securityId":"TESTWORKERID",
"workerStatus":"Active",
"firstName":"Test",
"lastName":"Userone"}
]
}
现在,我执行post请求并将String responseBody作为正文:
RestAssured.baseURI = ROOT_URI;
String endpoint="/v1/PostWorkers";
RequestSpecification httpRequest =
RestAssured.given().header("Authorization", "Basic " + encodedString)
.header("Content-Type", "application/json").body(postbody);
Response response = httpRequest.request(Method.POST,endpoint);
String responseBody = response.getBody().asString();
我收到错误400:
timestamp“:1552670194453,”status“:400,”error“:”Bad Request“,”exception“:”org.springframework.http.converter.HttpMessageNotReadableException“,”message“:”JSON解析错误:无法反序列化实例java.util.ArrayList超出START_OBJECT标记;嵌套异常是com.fasterxml.jackson.databind.JsonMappingException:无法在[来源:java.io.PushbackInputStream@56bba771]中将START.OBJECT标记中的java.util.ArrayList实例反序列化
该怎么办 ?
根据错误日志的问题是:
JSON解析错误:无法从START_OBJECT令牌中反序列化java.util.ArrayList的实例
这意味着API期望将ArrayList
作为输入,但是将Object
作为输入。换句话说,它会期望输入ArrayList<WorkerDetail>
,但是你传递的是对象WorkerDetails
的输入,它包含workerDetails
类型的字段ArrayList<WorkerDetail>
。
请尝试修改get请求的响应:
String responseBody = response.getBody().asString();
至:
List responseBody = response.jsonPath().getList("workerDetails");
然后在responseBody
请求中将此body()
传递给POST
方法。