【问题标题】:Integration test case and file upload集成测试用例和文件上传
【发布时间】:2017-10-07 11:17:00
【问题描述】:

我编写了一些与使用 spring 上传文件相关的代码,它工作正常,现在我正在为此编写集成测试用例,但我遇到了一些问题 我的控制器方法,

@RequestMapping(value = "/{attributeName}/upload", method = RequestMethod.POST)
@ResponseBody
public Result uploadCompany(HttpServletRequest request,
        @RequestParam MultipartFile file, @PathVariable String attributeName,
        @RequestParam long dateKey)
        throws IOException, PromotionException {
    some code
}

测试用例

@Test
public void shouldReturnTrueStatusWhenUploadCompany() throws Exception {
    MockMultipartFile file = new MockMultipartFile("company_upload", "company_upload.csv",
            MediaType.MULTIPART_FORM_DATA_VALUE, EMPLOYEE_NUMBER_FILE_CONTENT.getBytes(UTF_8));
    mockMvc.perform(
            MockMvcRequestBuilders.fileUpload(
                    PROMOTION + StringUtils.replace(ATTRIBUTE_NAME, "{attributeName}", "COMPANY") + "/upload")
                    .file(file).param("dateKey", "852017")  .contentType(MediaType.MULTIPART_FORM_DATA)
                    .accept(MediaType.APPLICATION_JSON))
            .andExpect(status().isOk());

}

但我得到了

2017-05-09 13:42:42,506 ERROR [Test worker] INTERNAL_SERVER_ERROR: 
org.springframework.web.bind.MissingServletRequestParameterException: Required MultipartFile parameter 'file' is not present

我哪里错了?

【问题讨论】:

  • 将 new MockMultipartFile("company_upload", "company_upload.csv", ....) 更改为 new MockMultipartFile("file", "company_upload.csv",...)
  • 谢谢,现在可以使用了。
  • 如果我把它作为答案可能会更好,你可以接受它作为答案,这样有助于其他人找到

标签: spring spring-mvc spring-integration


【解决方案1】:

换行

 MockMultipartFile file = new MockMultipartFile("company_upload", "company_upload.csv",
                    MediaType.MULTIPART_FORM_DATA_VALUE, EMPLOYEE_NUMBER_FILE_CONTENT.getBytes(UTF_8));  

 MockMultipartFile file = new MockMultipartFile("file", "company_upload.csv",
                    MediaType.MULTIPART_FORM_DATA_VALUE, EMPLOYEE_NUMBER_FILE_CONTENT.getBytes(UTF_8));

或者把你的控制器方法声明改成这样的

 public Result uploadCompany(HttpServletRequest request,
                @RequestParam(value = "company_upload") MultipartFile file, @PathVariable String attributeName,
                @RequestParam long dateKey)

【讨论】:

    猜你喜欢
    • 2019-06-14
    • 1970-01-01
    • 1970-01-01
    • 2017-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-29
    • 1970-01-01
    相关资源
    最近更新 更多