wicketframework を使用すると、wickettester を使用して最後にレンダリングされたページを見ることができます。私の wicketapplication が、runtimeexceptions と不足しているリソース (404) でカスタム ErrorPage にユーザーをリダイレクトするかどうかをテストしたいと思います。
最初のケースでは、リダイレクトをカスタム エラー ページに設定し、動作することを確認しました。基本的に、「 settings.setInternalErrorPage(ErrorPage.class);
」と、基本的に次のユニットテストがあります。
tester = new WicketTester(webApplication);
APage aPage = new APage();
tester.startPage(aPage);
tester.assertRenderedPage(APage.class);
tester.setExposeExceptions(false);
//Page rendered ok, now throw an exception at a button submit
when(aPage.getServiceFacade()).thenThrow(new RuntimeException("DummyException"));
tester.submitForm("searchPanel:searchForm");
tester.assertRenderedPage(ErrorPage.class);//YES, we got redirected to deploymode
したがって、runtimeexecoptions -> errorpage のテストは正常に機能します。次に、不足しているリソースのテストに進みます。基本的に、「web.xml」を設定します
<error-page>
<error-code>404</error-code>
<location>/error404</location>
</error-page>
それから改札にも取り付けました。これは、実際の使用では問題なく機能します。しかし、テストするとき..私はこれを試しました..
MockHttpServletRequest request = tester.getRequest();
String contextPath = request.getContextPath();
String filterPrefix = request.getFilterPrefix();
tester.setExposeExceptions(false);
tester.executeUrl(contextPath + "/" + filterPrefix + "/"+ "startpage" + "/MyStrangeurlToNothing);
tester.assertRenderedPage(ErrorPage.class);
しかし、この場合、テスター オブジェクトの lastrenderedpage は機能せず、null が返されます。たとえば、WicketTester は web.xml を読み取らないため、このエラーをマップする方法がわかりません。これをテストする方法に関するヒントはありますか?