Mock Mvc Test не попадает в конечную точку для файла Multipart в RestController - PullRequest
0 голосов
/ 08 марта 2020

Я вызываю службу в контроллере заказов, который получает составной файл, обрабатывает его и сохраняет в базе данных. Я пытаюсь создать Spring Rest Do c для него, но он даже не достигает конечной точки. Я создаю список заказов, который ожидает сервис. Он получает заказ в виде потока, как показано, и преобразует в поток заказов перед сохранением его в базе данных. Я показал основную часть контроллера и мой код для генерации остальных документов. Когда я запускаю код, я получаю следующее исключение, оно даже не достигает конечной точки, когда я устанавливаю точку останова. Я также использовал fileupload (), но это тоже не сработало.

Исключение составляет:

Тип содержимого = application / json Body = {"path": "/ orders / order_reception", "exceptionName ":" MissingServletRequestPartException "," message ":" Обязательная часть запроса 'uploadFile' не

present "," rootExceptionName ":" MissingServletRequestPartException "," rootMessage ":" MissingServletRequestPartException: обязательная часть запроса нет "}

@RestController
@RequestMapping(value = "/orders")
@Validated
class OrderController{

@PostMapping(path = "/order_reception")

public ResponseEntity receiveData(@RequestPart MultipartFile uploadFile,
                                               HttpServletRequest request,
                                               HttpServletResponse response) {
    if (!uploadFile.isEmpty()) {
        try {
            Reader reader = new InputStreamReader(request.getInputStream()));
            ... save file

            return new ResponseEntity<>(HttpStatus.HttpStatus.CREATED);
        } catch (Exception e) {
            return new ResponseEntity(HttpStatus.INTERNAL_SERVER_ERROR);
        }
    }
    return new ResponseEntity(HttpStatus.BAD_REQUEST);
}




@Test
 public void sendData() throws Exception {

     ObjectMapper mapper = new ObjectMapper();

     Order order = repository.getOrder("1233333");

     List<Order> orderList = new ArrayList<>():

     resourceList.add(order);

     MockMultipartFile orderFile = new MockMultipartFile("order-data", "order.json", "application/json", 

     mapper.writeValueAsString(orderList).getBytes(Charset.defaultCharset()));

     mockMvc.perform(multipart("/orders/order_reception")
             .file(orderFile))
             .andExpect(status().isCreated())
             .andDo(document("send-order",
                     preprocessRequest(prettyPrint()),
                     preprocessResponse(prettyPrint())));
 }

1 Ответ

0 голосов
/ 08 марта 2020

Спасибо, Мартен Деинум, ваше предположение, что имя файла было неправильным, исправило его. Я просто изменил имя в MockMultipartFile ("uploadsFile", ...)

...