Spring MVC webapp があり、現在、オブジェクトを使用してコントローラーを単体テストできMockHttpServletRequest
ます。
テストは次のようになります。
request = new MockHttpServletRequest(_mockServletContext, "PUT", "/createNewUser.action");
request.setParameter("username", "bob123");
response = new MockHttpServletResponse();
userController.createNewUser(request, response);
// Ensure the user was created, etc.
次に、基盤となるデータベース (およびその他のコントローラー) にクエリを実行して、正常に動作することを確認します。
ただし、これは出荷している実際の JSP ページをテストするものではありません。ちょうど晴天の嘲笑の要求。
私たちが達成したいことは、ブラウザでページを表示している実際のユーザーの観点からプロセス全体を模倣できるようにすることです。
request = new MockHttpServletRequest(_mockServletContext, "GET", "/newUser.html");
response = new MockHttpServletResponse();
userController.newUser(request, response);
//Pseudo-code!
DOM thePage = SomeBuilder.fromResponse(response);
thePage.getTextField("usernameField").setText("bob123");
thePage.getButton("submitUserButton").click();
// Then, we test the same assertions
...
これは、クライアントが実際に表示するビューに基づいて単体テストを確立するのに役立ちます。これには、適切な HTML コンポーネントが存在すること、およびボタン クリックをサポートする Javascript がサーバー/コントローラーに適切なパラメーターを送信していることを確認する必要があります。たとえば、いつの日かユーザーの名前が必要になる場合があります。または、タイプミスがあり、HTML フォームが実際に「username」ではなく「userUsername」パラメーターを送信する場合。この場合、現在認証されているユーザーの役割に応じて異なるコード パス/フォーム レイアウトがあるため、手動テストの要件を削除したいと考えています。
このタスクを達成するための Java/Spring MVC ベースの単体テスト フレームワークはありますか? または、同様の信頼性を提供する他のコード パターンはありますか?