有什么方法可以让junit测试采用MediaType.MULTIPART_FORM_DATA进行文件上传的Rest服务吗?

spa*_*kus 4 java junit web-services multipartform-data jersey

我有一个essentailly上载的宁静的Web服务,上载了文件。我还没有为其构建UI。我想编写一个junit测试,它将调用该服务并获取上传的文件。我该怎么做?我看不到手工创建将表单传递给服务的方法。

这是我的休息服务:

@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadFile(
    @FormDataParam("file") InputStream uploadedInputStream,
    @FormDataParam("file") FormDataContentDisposition fileDetail) {

    String uploadedFileLocation = "c://uploadedFiles/" + fileDetail.getFileName();

    // save it
   // saveToFile(uploadedInputStream, uploadedFileLocation);

    String output = "File uploaded via Jersey based RESTFul Webservice to: " + uploadedFileLocation;

    return Response.status(200).entity(output).build();
}
Run Code Online (Sandbox Code Playgroud)

Mad*_*ddy 5

我已经实现了以下代码,并且工作正常。让我知道您是否有任何问题:

FormDataMultiPart form = new FormDataMultiPart();
URI uri = new File("filepath").toURI();
InputStream data =  this.getClass().getResourceAsStream("filePath");    
FormDataBodyPart fdp1 = new FormDataBodyPart("key1", uri.toString());
FormDataBodyPart fdp2 = new FormDataBodyPart("key2",data, MediaType.APPLICATION_OCTET_STREAM_TYPE);

form.bodyPart(fdp1).bodyPart(fdp2); 
response = builder.post(ClientResponse.class, form);

Assert.assertEquals(response.getStatus(), Status.OK.getStatusCode());
Run Code Online (Sandbox Code Playgroud)