Тестирование запроса Post multipart / form-data на контроллере REST - PullRequest
0 голосов
/ 19 июня 2019

Я написал типичное весеннее загрузочное приложение, теперь я хочу добавить интеграционные тесты в это приложение.

У меня есть следующий контроллер и тест:

Контроллер:

@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, поскольку, я думаю, формат не является правильным для этого контроллера

Что я делаю не так?

1 Ответ

1 голос
/ 19 июня 2019

Это должно быть опечатка.

В вашем контроллере вы утверждаете, что URL запроса равен /uploadpicture, но вы посещаете /uploadPicture для модульного теста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...