Я хотел бы проверить, что, когда запрашивается неизвестный URL-адрес, и возникает ошибка 404, которую мое веб-приложение действительно перенаправляет в нужное место.Тест весеннего блока 404 unknown url in mock mvc
Я не мог получить эту работу, я думаю, потому что tomcat обрабатывает ошибки 404, поэтому forwardedUrl всегда является нулевым для тестов. Я знаю, что это работает на самом деле, потому что, если я ввожу какой-то мусор в URL-адрес, мое приложение перенаправляется на мою пользовательскую страницу.
Мой блок тест выглядит следующим образом:
@Test
public void testUnknownUrl() throws Exception {
mockMvc.perform(get("/url_doesnt_exist"))
.andExpect(status().isNotFound())
.andExpect(forwardedUrl("/static/error/Sorry.html"));
}
Моя конфигурация web.xml является:
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<error-page>
<error-code>404</error-code>
<location>/static/error/Sorry.html</location>
</error-page>
Отображение для/статики определяется в моем весеннем конфигурации, как:
<resources mapping="/static/**" location="/resources/" />
В конечном счете, я хотел бы высмеять запрос на неизвестный URL-адрес, а затем проверить, что возвращаемая страница/static/erro г/Sorry.html.
Я делаю что-то неправильно или это не способ обрабатывать 404 и т. Д. Весной? Проверка перенаправленного URL-адреса в модульном тесте всегда равна нулю.
Немного другой вопрос, но все-таки связанный с ним, в какой момент обработка ошибок tomcat вызывает вызов над диспетчером управления весенним контроллером?
Не согласны ли вы использовать конфигурацию «Диспетчерский сервлет» Spring? Просто, чтобы быть уверенным ... –
Нет. Я отредактирую свой вопрос. Спасибо – berimbolo