【发布时间】:2018-01-31 12:54:41
【问题描述】:
我使用 mkyong 的示例使用 RESTeasy 创建了一个文档上传端点:http://www.mkyong.com/webservices/jax-rs/file-upload-example-in-resteasy/
@POST
@Path("/upload")
@Consumes({MediaType.MULTIPART_FORM_DATA})
public Response uploadFile(MultipartFormDataInput input) {
List<InputPart> inputParts = MultipartHtmlUtils.getInputParts(input);
for (InputPart inputPart : inputParts) {
try {
String fileName = getFileName(inputPart);
byte[] bytes = extractFile(inputPart);
saveFile(bytes,fileName);
} catch (DocumentUploadException e) {
e.printStackTrace();
return Response.status(Response.Status.BAD_REQUEST).build();
}
}
return Response.ok().build();
}
我已经注入了一个客户端,它将处理保存文档,以便在测试中模拟注入的客户端。
private void saveFile(byte[] content, String filename) {
documentUploadClient.saveDocument(content, filename, uan);
}
我正在努力为此编写测试,因为似乎无法创建 MultipartFormDataInput 对象或 InputPart 对象。
如何测试或重构它以使其更容易进行单元测试?
编辑:
我已经构建了一个多部分 HTTPentity,但无法将其转换为 MultipartFormDataInput,这是测试其余简单功能所必需的:
private HttpEntity buildMultipartData() {
MultipartEntityBuilder builder = MultipartEntityBuilder.create().setContentType(ContentType.MULTIPART_FORM_DATA);
InputStream inputStream = getClass().getClassLoader().getResourceAsStream("testFile");
builder.addBinaryBody("file", inputStream, ContentType.APPLICATION_OCTET_STREAM, "testFile" );
return builder.build();
}
【问题讨论】:
标签: java unit-testing multipartform-data resteasy