jaw*_*wsh 6 java spring multipartform-data spring-mvc mockmvc
我创建了一个控制器,它将使用“multipart/form-data”
@PostMapping(value="/sample")
public void sample(
@ModelAttribute("request") SampleRequest request){
// codes
}
Run Code Online (Sandbox Code Playgroud)
样本请求对象
@NotNull
private MultipartFile file;
@Pattern(regexp = "^[0-9A-Za-z]*")
private String fileName;
private String other;
Run Code Online (Sandbox Code Playgroud)
现在,我将尝试使用 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();
Run Code Online (Sandbox Code Playgroud)
有没有办法可以使用 multipart/form_data 完成我的请求?理想情况下,它需要位于 MockHttpServletRequest 的主体中
MockHttpServletRequest:
HTTP Method = POST
Request URI = --path
Parameters = {}
Headers = --headers
Body = null
Run Code Online (Sandbox Code Playgroud)
Vit*_*niz 10
我已经设法这样做了:
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();
Run Code Online (Sandbox Code Playgroud)
我在这里看到过这个例子:
https://www.baeldung.com/spring-multipart-post-request-test
| 归档时间: |
|
| 查看次数: |
9557 次 |
| 最近记录: |