【问题标题】:How to write a unit test for a DefaultMultipartHttpServletRequest controller method with MockMvc?如何使用 MockMvc 为 DefaultMultipartHttpServletRequest 控制器方法编写单元测试?
【发布时间】:2017-03-02 08:48:11
【问题描述】:

这样的代码:

@RequestMapping(value = "/upload/{resource}",method=RequestMethod.POST)
@ResponseBody
public Object uploadfileUpload(@PathVariable("resource") String resource,DefaultMultipartHttpServletRequest request,HttpServletResponse resp,MultipartFile file) throws IOException {
    ......
}

在代码中:

this.mockMvc.perform(mockMultipartHttpServletRequestBuilder)

只能发MultipartHttpServletRequest,因为mockMultipartHttpServletRequestBuilder implements MultipartHttpServletRequestMultipartHttpServletRequest 是一个接口。

如何创建DefaultMultipartHttpServletRequest 类对象,然后在mockMvc 发布完成单元测试的请求?

【问题讨论】:

  • 通过开始阅读教程;和实验。不仅仅是在这里放弃您的要求并期望其他人为您做到这一点。欢迎您提出具体问题,例如“这是我的代码,它在这里和那里都不起作用......”

标签: java spring unit-testing


【解决方案1】:
@Test
public void testUploadARA3() throws Exception {
    FileInputStream file = new FileInputStream(
            "C:/test_42873.xlsm");
    MockMultipartFile multipartFile = new MockMultipartFile(
            "test_42873.xlsm", file);
    MockMultipartHttpServletRequestBuilder mockMultipartHttpServletRequestBuilder = (MockMultipartHttpServletRequestBuilder) fileUpload(
            "/upload/{resource}", "ARA").accept(MediaType.ALL);
    mockMultipartHttpServletRequestBuilder.file(multipartFile);
    //mockMultipartHttpServletRequestBuilder.content("whatever");

    MockHttpServletRequest request;
    MvcResult response =   this.mockMvc.perform(mockMultipartHttpServletRequestBuilder).andDo(print())
            .andExpect(status().isOk()).andReturn();
    System.out.println(response.getResponse().getContentAsString());

}

我的测试代码没有进入uploadfileUpload方法。

【讨论】:

  • this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();
猜你喜欢
  • 1970-01-01
  • 2013-01-11
  • 2021-03-14
  • 1970-01-01
  • 1970-01-01
  • 2010-09-12
  • 2020-09-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多