控制器
@RequestMapping(value="/AddContacts", method=RequestMethod.POST)
public @ResponseBody String addContacts(ContactBean cb,HttpServletRequest request,HttpServletResponse response,@RequestParam("upload") MultipartFile file) throws IllegalStateException, IOException
{
}
mockMvc测试代码
第一种写法:
public void testAddContacts() throws Exception{
File f = new File("C:\\Users\\Public\\Pictures\\Sample Pictures\\Penguins.jpg");
System.out.println(f.isFile()+" "+f.getName()+f.exists());
FileInputStream fi1 = new FileInputStream(f);
FileInputStream fi2 = new FileInputStream(new File("C:\\Users\\Public\\Pictures\\Sample Pictures\\Tulips.jpg"));
MockMultipartFile fstmp = new MockMultipartFile("upload", f.getName(), "multipart/form-data",fi1);
MockMultipartFile secmp = new MockMultipartFile("upload", "Tulips.jpg","multipart/form-data",fi2);
MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
mockMvc.perform(MockMvcRequestBuilders.fileUpload("/AddContacts")
.file(fstmp)
.file(secmp)
.param("name","abc").param("email","abc@gmail.com").param("phone", "1234567890"))
.andExpect(status().isOk());
}
第二种写法:
该方法MockMvcRequestBuilders.fileUpload
已弃用
fileUpload @Deprecated public static
MockMultipartHttpServletRequestBuilder fileUpload(java.net.URI uri)
不推荐使用。支持 multipart(URI)
为 multipart 请求创建一个MockMultipartHttpServletRequestBuilder。
参数: uri - URL 自:
4.0.3
To 而不是fileUpload()
,使用这种方式。
MockMultipartFile mockMultipartFile = new MockMultipartFile("user-file",fileName,
"text/plain", "test data".getBytes());
MockHttpServletRequestBuilder builder =
MockMvcRequestBuilders.multipart("/upload")
.file(mockMultipartFile);
或者
MockMultipartFile jsonFile = new MockMultipartFile("test.json", "", "application/json", "{\"key1\": \"value1\"}".getBytes());
mockMvc.perform(MockMvcRequestBuilders.multipart("/fileUpload")
.file("file", jsonFile.getBytes())
.characterEncoding("UTF-8"))