我有GET REST API,它在响应头中发送一些信息。 我正在使用放心框架编写测试用例,我面临的问题是,在GET API的响应中,我没有得到服务器在其余API响应中设置的头字符串。 我在Rest客户端和HTTP资源中检查了相同的API,在那里我可以看到服务器在API响应中设置的头信息。
但是在确定的Response对象中,服务器设置的头信息不可用。
Rest API代码:
@Path("/download")
@GET
@Produces("application/zip")
public Response downloadContractZipFile(@PathParam("contractId") final String contractId) throws CMException{
ContractActionRequest contractActionRequest = new ContractActionRequest();
contractActionRequest.setId(contractId);
DownloadActionResponse downloadActionResponse = (DownloadActionResponse) executeAction(Action.DOWNLOAD, contractActionRequest);
Response res = Response
.ok(downloadActionResponse.getFilestream(), MediaType.APPLICATION_OCTET_STREAM)
.header("content-disposition",downloadActionResponse.getContentDisposition())
.header("Expires", "0")
.header("Content-Length", String.valueOf(downloadActionResponse.getContentLength()) )
.build();
return res;
}
上面你可以看到,API在标题中返回 Content-Length 。但是当我使用放心框架调用上面的API时,它不会在标头中收到“Content-Length”。断言失败了。 放心测试案例代码:
given().get(propertyURI).then().assertThat().header("Content-Length","7562");
java.lang.AssertionError: Expected header "Content-Length" was not "7562", was "null". Headers are:
X-Powered-By=Servlet/3.0
Cache-Control=no-cache, no-store
Cache-directive=no-cache
Pragma=no-cache
Pragma-Directive=no-cache
Expires=Thu, 01 Jan 1970 00:00:00 GMT
Content-Type=text/html;charset=UTF-8
x-authenticated=false
x-location=https://reena:9453/app/login.jsp?targetApp=OM
Content-Language=en-US
Transfer-Encoding=chunked