当前位置: 首页 > 知识库问答 >
问题:

集成测试用例和文件上传

狄法
2023-03-14

我写了一些相关的代码,使用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

我哪里错了?

共有1个答案

周昊乾
2023-03-14

改变你的路线

 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)
 类似资料:
  • 我无法编写将文件上载到控制器的测试。 在这一问题发生的所有事件中,我没有看到任何事情对我有效。 我可以从我的webapp上传和存储文件,但是当我运行测试时,控制器中的文件总是空的 应用程序 控制器 测验

  • 单元测试 单元测试仅依赖于源代码,是测试代码逻辑是否符合预期的最简单方法。 运行所有的单元测试 make test 仅测试指定的package # 单个package make test WHAT=./pkg/api # 多个packages make test WHAT=./pkg/{api,kubelet} 或者,也可以直接用go test go test -v k8s.io/kubernet

  • 我们有一个spring组件,它将应用程序上下文设置为一个静态字段。然后从应用程序的其他部分访问该静态字段。我知道不应该使用,但有时需要从非spring管理的bean访问spring上下文。例如。字段如下所示: (取自http://www.dcalabrise.com/blog/java/spring-context-static-class/) 问题在于,当在集成测试中使用JUnit(或Spock

  • 英文原文:http://emberjs.com/guides/testing/integration/ 集成测试通常用来测试应用中得重要工作流。集成测试用来模拟用户交互和确认交互结果。 设置 为了对Ember应用进行集成测试,需要在测试框架中运行应用。首先需要将根元素(root element)设置为任意一个已知将存在的元素。如果根元素在测试运行时可见的话,这对测试驱动开发非常有用,带来的帮助非常

  • 需要对Oauth2客户端的集成测试的帮助。 设置: 具有受保护UI和API的客户端 完成所有密码验证并检索访问令牌的身份验证服务器 集成测试: 放心用于终点测试 在实现Oauth2之前,测试工作良好 Ole测试示例: 问题: 如何使此测试再次工作? 应如何更改res-assured设置以支持OAuth2? 是否需要模拟身份验证服务器,或者是否可以注入/mock安全上下文?

  • translated_page: https://github.com/PX4/Devguide/blob/master/en/test_and_ci/README.md translated_sha: 95b39d747851dd01c1fe5d36b24e59ec865e323e 测试与持续集成 PX4提供大量的测试和持续集成。 本页提供概述。 在本地机器上测试 下面这条命令足够打开一个带有运