不明な URL が要求され、404 エラーが生成されたときに、Web アプリが実際に正しい場所にリダイレクトされることをテストしたいと思います。
私はこれを機能させることができませんでした。Tomcat が 404 エラーを処理しているため、テストでは forwardedUrl が常に null であると思います。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 のマッピングは、私の春の設定で次のように定義されています。
<resources mapping="/static/**" location="/resources/" />
最終的に、不明な URL へのリクエストをモックして、返されるページが /static/error/Sorry.html であることを確認したいと思います。
私は何か間違ったことをしていますか、これは春に404などを処理する方法ではありませんか? 単体テストで転送された URL のチェックは常に null です。
少し異なる質問ですが、関連するのはすべて同じです.Tomcatのエラー処理は、スプリングコントローラーのアドバイス処理に加えてどの時点で呼び出されますか?