【发布时间】:2019-01-01 03:38:38
【问题描述】:
我正在尝试为包含以下方法的 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
【问题讨论】:
-
根据 Spring 版本使用
multipart(对于 Spring 5),否则使用fileUpload作为工厂方法。
标签: java spring junit mockito classcastexception