【发布时间】:2015-08-17 14:11:15
【问题描述】:
我想测试一下,当请求未知 url 并生成 404 错误时,我的 web 应用程序实际上会重定向到正确的位置。
我无法让这个工作,我认为是因为 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>
/static 的映射在我的 spring 配置中定义,例如:
<resources mapping="/static/**" location="/resources/" />
最后我想模拟一个对未知 url 的请求,然后检查返回的页面是 /static/error/Sorry.html。
我是不是做错了什么,或者这不是春季处理 404 等问题的方法?单元测试中对转发url的检查始终为null。
一个稍微不同但相关的问题是,tomcat 错误处理在什么时候会在 spring 控制器通知处理之上被调用?
【问题讨论】:
-
您介意分享您的 Spring 的
Dispatcher Servlet配置吗?只是为了确定...... -
不,我将编辑我的问题。谢谢
标签: spring unit-testing http-status-code-404 mockmvc