如何使用MockMvc为DefaultMultipartHttpServletRequest控制器方法编写单元测试?
问题描述:
这样的代码:如何使用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 MultipartHttpServletRequest
。 MultipartHttpServletRequest
是一个界面。
如何创建DefaultMultipartHttpServletRequest
类对象然后在mockMvc
发布请求以完成我的单元测试?
答
@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(); –
通过开始阅读教程;并试验。不要只是放弃你的要求,期待其他人为你做这件事。欢迎您提出具体问题,例如“这里是我的代码,它不在这里和那里工作......” – GhostCat