我已经编写了一个典型的spring boot应用程序,现在我想对该应用程序添加集成测试。
我有以下控制器并进行了测试:
控制器:
@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);
}
}
测试:
@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());
}
在Android上使用OkHttp3
客户端无缝测试控制器可以正常工作,但是我不知道如何在MockMvc
上执行该请求
我希望200
是一种状态代码,但是会得到404
,因为我认为该格式对于该控制器而言不是正确的
我在做什么错了?
答案 0 :(得分:1)
必须是错字。
在您的控制器中,您声称请求URL为/uploadpicture
,但您访问了/uploadPicture
进行单元测试。