如何在 MockMVC 中 POST multipart/form-data?
How to POST multipart/form-data in MockMVC?
我创建了一个会消耗 'multipart/form-data'
的控制器
@PostMapping(value="/sample")
public void sample(
@ModelAttribute("request") SampleRequest request){
// codes
}
SampleRequest 对象
@NotNull
private MultipartFile file;
@Pattern(regexp = "^[0-9A-Za-z]*")
private String fileName;
private String other;
现在,我将尝试使用 Mock MVC 对其进行测试,但我不知道如何将 'multipart/form-data' 作为内容传递。我看到很多样本使用 JSON 但没有使用 multipart/form-data
mockMvc.perform(post(path)
.servletPath(path)
.headers(headers)
.contentType(MediaType.MULTIPART_FORM_DATA)
.content(request)) // -> How to put the multipart/form-data here
.andDo(print())
.andReturn();
有什么方法可以让我用 multipart/form_data 完成我的请求?理想情况下,它需要在 MockHttpServletRequest
的正文中
MockHttpServletRequest:
HTTP Method = POST
Request URI = --path
Parameters = {}
Headers = --headers
Body = null
我已经做到了:
Resource fileResource = new ClassPathResource("YOUR FILE NAME");
assertNotNull(fileResource);
MockMultipartFile firstFile = new MockMultipartFile(
"file",fileResource.getFilename(),
MediaType.MULTIPART_FORM_DATA_VALUE,
fileResource.getInputStream());
assertNotNull(firstFile);
MockMvc mockMvc = MockMvcBuilders.
webAppContextSetup(webApplicationContext).build();
MvcResult andReturn = mockMvc.perform(MockMvcRequestBuilders
.multipart(**YOUR URL**)
.file(firstFile)
.headers(**YOUR HEADERS**))
.andDo(print())
.andExpect(status().isOk())
.andReturn();
我在这里看过这个例子:
我创建了一个会消耗 'multipart/form-data'
的控制器@PostMapping(value="/sample")
public void sample(
@ModelAttribute("request") SampleRequest request){
// codes
}
SampleRequest 对象
@NotNull
private MultipartFile file;
@Pattern(regexp = "^[0-9A-Za-z]*")
private String fileName;
private String other;
现在,我将尝试使用 Mock MVC 对其进行测试,但我不知道如何将 'multipart/form-data' 作为内容传递。我看到很多样本使用 JSON 但没有使用 multipart/form-data
mockMvc.perform(post(path)
.servletPath(path)
.headers(headers)
.contentType(MediaType.MULTIPART_FORM_DATA)
.content(request)) // -> How to put the multipart/form-data here
.andDo(print())
.andReturn();
有什么方法可以让我用 multipart/form_data 完成我的请求?理想情况下,它需要在 MockHttpServletRequest
的正文中MockHttpServletRequest:
HTTP Method = POST
Request URI = --path
Parameters = {}
Headers = --headers
Body = null
我已经做到了:
Resource fileResource = new ClassPathResource("YOUR FILE NAME");
assertNotNull(fileResource);
MockMultipartFile firstFile = new MockMultipartFile(
"file",fileResource.getFilename(),
MediaType.MULTIPART_FORM_DATA_VALUE,
fileResource.getInputStream());
assertNotNull(firstFile);
MockMvc mockMvc = MockMvcBuilders.
webAppContextSetup(webApplicationContext).build();
MvcResult andReturn = mockMvc.perform(MockMvcRequestBuilders
.multipart(**YOUR URL**)
.file(firstFile)
.headers(**YOUR HEADERS**))
.andDo(print())
.andExpect(status().isOk())
.andReturn();
我在这里看过这个例子: