是的,有一种方法,而且也很简单!
我自己也遇到了同样的问题。尽管我不满意Sam Brannen的回答,但似乎Spring MVC现在支持PUT文件上传,因为我可以简单地使用Postman发出这样的请求(我使用的是Spring Boot 1.4.2)。因此,我一直在挖掘,发现唯一的问题是事实所MockMultipartHttpServletRequestBuilder
返回mockmvcRequestBuilders.fileUpload()
的方法将方法硬编码为“ POST”。然后我发现了with()
方法…
这使我想出了这个巧妙的小窍门,以强制MockMultipartHttpServletRequestBuilder
无论如何都要使用“ PUT”方法:
Mockmultipartfile file = new Mockmultipartfile("data", "dummy.csv",
"text/plain", "Some dataset...".getBytes());
MockMultipartHttpServletRequestBuilder builder =
mockmvcRequestBuilders.fileUpload("/test1/datasets/set1");
builder.with(new RequestPostProcessor() {
@Override
public MockHttpServletRequest postProcessRequest(MockHttpServletRequest request) {
request.setMethod("PUT");
return request;
}
});
mvc.perform(builder
.file(file))
.andExpect(status().ok());
奇迹般有效!