我正在尝试为包含以下方法的Controller类编写Junit测试。
@RequestMapping(value = "/mappingUrl", method = RequestMethod.POST)
public String uploadFileMethod(HttpServletResponse httpResponse, HttpServletRequest httpRequest, ModelMap model) throws Exception {
try {
MultipartFile multipartFile = ((MultipartHttpServletRequest) httpRequest).getFile("fileName");
}
catch(Exception e){}
}
在测试课中,我有以下方法
@Test
public void testUploadFileMethod() throws Exception {
mockMVC.perform(post("/mappingUrl")).andExpect(status().isOk());
}
执行测试时出现以下异常:
java.lang.ClassCastException: org.springframework.mock.web.MockHttpServletRequest cannot be cast to org.springframework.web.multipart.MultipartHttpServletRequest
有没有一种方法可以在不更改现有代码的情况下测试该方法?该类已在整个应用程序中使用,恐怕会破坏其他内容。
我遇到了类似的问题,以下是很接近的问题:
Mockito ClassCastException - A mock cannot be cast
pass remoteUser value in HttpServletRequest to mockmvc perform test
答案 0 :(得分:0)
只需尝试
MockMultipartFile myFile = new MockMultipartFile("data", "myFile.txt", "text/plain", "myFileContent".getBytes());
mockMVC.perform(MockMvcRequestBuilders.multipart("/mappingUrl")
.file(myFile)).andExpect(status().isOk());
如here
所述