【发布时间】:2020-10-22 07:00:59
【问题描述】:
我检查了所有类似的帖子,但仍然找不到解决方案。
问题是所需的请求部分“文件”在测试类中不存在。
我想上传一个文件并将其保存到数据库中。这是我的休息控制器@RestController:
@PostMapping(value = "/upload")
public ResponseEntity<LogoDto> uploadLogo(@RequestParam("file") MultipartFile multipartFile) {
return ResponseEntity.ok(logoService.createLogo(multipartFile));
}
还有我的测试课:
@Test
public void createLogo2() throws Exception {
String toJsonLogoDto = new Gson().toJson(logoDto);
MockMultipartFile file = new MockMultipartFile("path", "url", MediaType.APPLICATION_JSON_VALUE, image);
LogoDto response = LogoDataTest.validLogoDto();
Mockito.when(logoServiceMock.createLogo(Mockito.any(MultipartFile.class))).thenReturn(response);
mockMvc.perform(MockMvcRequestBuilders.multipart("/brand-icon/upload")
.file(file)
.content(MediaType.APPLICATION_JSON_VALUE)
.contentType(MediaType.APPLICATION_JSON_VALUE)
.characterEncoding(CharEncoding.UTF_8))
.andDo(MockMvcResultHandlers.print())
.andExpect(MockMvcResultMatchers.status().isOk());
}
而我的application.yml 看起来像这样:
spring:
servlet:
multipart:
enabled: true
max-file-size: 2MB
max-request-size: 10MB
我试图在我的@PostMapping 中添加消耗; 尝试从字面上设置每个 MediaTypes.. 仍然会出错。
感谢您的所有回答。
【问题讨论】:
标签: spring spring-boot spring-mvc spring-restcontroller spring-rest