2017-03-02 98 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(); –

相關問題