MockMvc测试无法到达RestController中Multipart文件的端点

问题描述 投票:0回答:1

我正在订单控制器中调用服务,该控制器接收多部分文件并对其进行处理并将其保存到数据库中。我正在尝试为此创建一个Spring Rest Doc,但是它甚至没有达到终点。我正在创建服务期望的订单列表。如图所示,它以流的形式接收订单,并在将订单保存到数据库之前将其转换为订单流。我已经展示了控制器的主要部分以及用于生成其余文档的代码。当我运行代码时,出现以下异常,当我设置断点时,它甚至不会碰到端点。我也使用了fileupload(),但是那也不起作用。

例外是:

内容类型= application / json正文= {“路径”:“ / orders / order_reception”,“ exceptionName”:“ MissingServletRequestPartException”,“消息”:“必需的请求部分'uploadFile'不是

现在],“ rootExceptionName”:“ MissingServletRequestPartException”,“ rootMessage”:“ MissingServletRequestPartException:所需的请求部分'uploadFile'不存在”}

@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())));
 }
spring spring-boot spring-mvc spring-rest
1个回答
0
投票

谢谢Marten Deinum,您关于文件名错误的建议将其修复。我只是在MockMultipartFile(“ uploadsFile”,...)

中更改了名称
© www.soinside.com 2019 - 2024. All rights reserved.