Spring 在REST控制器上测试Post多部分/表单数据请求
我已经编写了一个典型的spring boot应用程序,现在我想向该应用程序添加集成测试 我有以下控制器和测试: 控制器:Spring 在REST控制器上测试Post多部分/表单数据请求,spring,spring-boot,Spring,Spring Boot,我已经编写了一个典型的spring boot应用程序,现在我想向该应用程序添加集成测试 我有以下控制器和测试: 控制器: @RestController public class PictureController { @RequestMapping(value = "/uploadpicture", method = RequestMethod.POST) public ResponseEntity<VehicleRegistrationData> uploadPi
@RestController
public class PictureController {
@RequestMapping(value = "/uploadpicture", method = RequestMethod.POST)
public ResponseEntity<VehicleRegistrationData> uploadPicturePost(@RequestPart("userId") String userId, @RequestPart("file") MultipartFile file) {
try {
return ResponseEntity.ok(sPicture.saveAndParsePicture(userId, file));
} catch (IOException e) {
logger.error(e.getMessage(), e);
}
return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED);
}
}
在android上使用OkHttp3
客户端测试控制器可以无缝地工作,但我不知道如何在MockMvc上实现该请求
我希望200
作为状态码,但得到404
,因为我想,该控制器的格式不正确
我做错了什么?一定是打字错误
在控制器中,您声明请求URL为/uploadpicture
,但访问/uploadpicture
进行单元测试。404通常表示URL不正确。你能试着在测试中纠正这个案例吗(uploadPicture vs uploadPicture)@Vasco谢谢,我就是那么瞎
@Test
public void authorizedGetRequest() throws Exception {
File data = ResourceUtils.getFile(testImageResource);
byte[] bytes = FileUtils.readFileToByteArray(data);
ObjectMapper objectMapper = new ObjectMapper();
MockMultipartFile file = new MockMultipartFile("file", "test.jpg", MediaType.IMAGE_JPEG_VALUE, bytes);
MockMultipartFile userId =
new MockMultipartFile("userId",
"userId",
MediaType.MULTIPART_FORM_DATA_VALUE,
objectMapper.writeValueAsString("123456").getBytes()
);
this.mockMvc.perform(multipart("/uploadPicture")
.file(userId)
.file(file)
.header(API_KEY_HEADER, API_KEY)).andExpect(status().isOk());
}