Java Rest API测试org.springframework.http.converter.httpMessageEndableException

Java Rest API测试org.springframework.http.converter.httpMessageEndableException,java,automated-tests,rest-assured,Java,Automated Tests,Rest Assured,我正在尝试测试两个RESTAPI端点,一个是get,另一个是post。其思想是get响应返回的响应主体应该是post的主体 我正在使用的代码: RestAssured.baseURI = ROOT_URI; RequestSpecification httpRequest = RestAssured.given().header("Authorization", "Basic " + encodedString); String endPoint="/v1/getworkers"; Respo

我正在尝试测试两个RESTAPI端点,一个是get,另一个是post。其思想是get响应返回的响应主体应该是post的主体

我正在使用的代码:

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请求并将字符串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:

时间戳:1552670194453,“状态”:400,“错误”:“错误” 请求“,”异常“:”org.springframework.http.converter.httpmessagenoteradableexception“,”消息“:”JSON 分析错误:无法反序列化java.util.ArrayList的实例 启动对象令牌的类型;嵌套异常是 com.fasterxml.jackson.databind.JsonMappingException:无法 从START\u对象中反序列化java.util.ArrayList的实例 令牌\n位于[源代码:java.io]。PushbackInputStream@56bba771


怎么办?

根据错误日志,问题是:

JSON分析错误:无法反序列化START\ u对象标记之外的java.util.ArrayList实例

这意味着API需要一个
ArrayList
作为输入,但需要一个
对象
作为输入。换句话说,它需要一个
ArrayList
的输入,但您传递的是 对象
WorkerDetails
,其中包含类型为
ArrayList
的字段
WorkerDetails

请尝试从以下位置修改get请求的响应:

String responseBody = response.getBody().asString();
致:


然后将此
responseBody
传递给
POST
请求上的
body()
方法。

您尝试过这里描述的解决方案吗?您尝试反序列化的数据是什么?@supratimdutta这对您有帮助吗?
List responseBody = response.jsonPath().getList("workerDetails");