У меня есть модульный тест для выполнения на основе следующего метода:Spring испытательной установки: IllegalStateException для MultipartHttpServletRequest
@RequestMapping(value = "/query")
public class QueryController {
...
@RequestMapping(value = "/att/handle", method = RequestMethod.POST)
public @ResponseBody
String handleUpload(MultipartHttpServletRequest request, HttpServletResponse response) throws IOException {
JsonResponseDto responseDto = null;
HashMap<Long, String> attachmentInfoMap = null;
String licNo = request.getParameter("licNo");
String queId = request.getParameter("queId");
....
Пожалуйста, найдите мой блок тест ниже:
@RunWith(PowerMockRunner.class)
public class QueryControllerTest {
@InjectMocks
private QueryController queryController;
private MockMvc mockMvc;
private MockMultipartHttpServletRequest request;
private MockHttpServletResponse response;
private MockHttpSession session;
@Before
public void setup() {
request = new MockMultipartHttpServletRequest();
request.setAttribute(DispatcherServlet.OUTPUT_FLASH_MAP_ATTRIBUTE, new FlashMap());
response = new MockHttpServletResponse();
session = new MockHttpSession();
request.setSession(session);
RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(request));
//Added viewResolver to prevent circular view path error
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setPrefix("/WEB-INF/jsp/");
viewResolver.setSuffix(".jsp");
this.mockMvc = MockMvcBuilders.standaloneSetup(queryController).setViewResolvers(viewResolver).build();
}
@Test
public void handleUploadQueryAttachmentsOK() throws Exception {
mockMvc.perform(post("/query/att/handle").param("queId", "123").param("licNo", "12"))
.andExpect(status().isFound()
);
}
Когда я выполнить блок проверьте следующее сообщение об ошибке:
java.lang.IllegalStateException: Current request is not of type [org.springframework.web.multipart.MultipartHttpServletRequest]: org.springframework.mock.web.MockHttpServletRequest
Любая идея, как я могу решить вышеупомянутый erro r сообщение пожалуйста?
Устанавливая тест правильно. Вы запрашиваете, ответ и сеанс бесполезны. Они не используются, то же самое для настройки, которую вы делаете. В вашем '@ Before' вам нужно только настроить' MockMvc', и это все. Далее ваш запрос ошибочен, так как это обычный пост, а не многостраничный пост, который вы должны изменить тип контента. –
Вы действительно хотите загрузить файл или просто wan, чтобы отправить два параметра запроса «licNo» и «queId»? Я не нашел код загрузки файла в тесте. – Braj