MockMvc - ожидаемый статус: ‹200›, но был: ‹302›

Ошибка 302 произошла во время тестового юнита mockmvc. Проблема перенаправления класса insertBoard, что мне делать. ожидаемый статус:‹200> а был:‹302>

@RequestMapping(value="/sample/insertBoard.do")
public ModelAndView insertBoard(CommandMap commandMap,HttpServletRequest request) throws Exception{
    ModelAndView mv = ModelAndView("redirect:/sample/openBoardList.do");
    sampleService.insertBoard(commandMap.getMap(),request);
    return mv;
}

@Test
public void testInsertBoard() throws Exception{
    File fis = new File("c:\\users\\aaa.jpg");
    FileInputStream fi1 = new FileInputStream(fis);
    MockMultipartFile file = new MockMultipartFile("file",fis.getName(),"multipart/form-data",fi1);

    this.mockMvc.perform(MockMvcRequestBuilders.fileupload("/sample/insertBoard.do"))
                .file(file)
                .param("title","title_test")
                .param("contents","contents_test")
                .contentType(MediaType.MULTIPART_FORM_DATA)
                .andExpect(status().isOk());
}

person kim    schedule 16.08.2016    source источник
comment
Это может не относиться к конкретной ситуации, но в моем случае это было из-за завершающей косой черты (/) в конце URL-адреса... Например, если вы сопоставляете путь к /server/context/ и вызываете /server /context в тестовом коде вернет 302   -  person Hoàng Long    schedule 13.12.2019


Ответы (1)


Ваш тест проверяет, что возвращается при вызове /sample/insertBoard.do. MockMvc не следует перенаправлениям, поэтому 302 действителен, поскольку это означает, что браузер должен перейти на новый URL-адрес при возврате ответа. Вы хотели бы проверить правильность перенаправления, используя redirectedUrl("/sample/openBoardList.do") вместо status().isOk().

Включая обновленный пример... надеюсь, это поможет понять изменение:

@Test
public void testInsertBoard() throws Exception{
    File fis = new File("c:\\users\\aaa.jpg");
    FileInputStream fi1 = new FileInputStream(fis);
    MockMultipartFile file = new MockMultipartFile("file",fis.getName(),"multipart/form-data",fi1);

    this.mockMvc.perform(MockMvcRequestBuilders.fileupload("/sample/insertBoard.do"))
            .file(file)
            .param("title","title_test")
            .param("contents","contents_test")
            .contentType(MediaType.MULTIPART_FORM_DATA)
            .andExpect(redirectedUrl("/sample/openBoardList.do"));
}
person Shawn Clark    schedule 16.08.2016
comment
мне жаль . я не могу понять. просто я хочу, чтобы testInsertBoard успешно прошел тест. - person kim; 17.08.2016