2017-03-02 97 views
-2

这样的代码:如何使用MockMvc为DefaultMultipartHttpServletRequest控制器方法编写单元测试?

@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发布请求以完成我的单元测试?

+0

通过开始阅读教程;并试验。不要只是放弃你的要求,期待其他人为你做这件事。欢迎您提出具体问题,例如“这里是我的代码,它不在这里和那里工作......” – GhostCat

回答

0
@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方法。

+0

this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build(); –

相关问题