Я написал типичное весеннее загрузочное приложение, теперь я хочу добавить интеграционные тесты в это приложение.
У меня есть следующий контроллер и тест:
Контроллер:
@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());
}
Тестирование контроллера с клиентом OkHttp3
на Android работает без проблем, но я не могу понять, как заставить этот запрос работать на MockMvc
Я ожидаю 200
в качестве кода состояния, но получу 404
, поскольку, я думаю, формат не является правильным для этого контроллера
Что я делаю не так?