にいくつかの検索を行う一方でSO私はURLから「appUrl」を抽出するために、コードのthis作品に出会いました:ユニットテストのためのHttpServletRequestのインスタンスを作成するには?
public static String getAppUrl(HttpServletRequest request)
{
String requestURL = request.getRequestURL().toString();
String servletPath = request.getServletPath();
return requestURL.substring(0, requestURL.indexOf(servletPath));
}
私の質問は、このような一つのユニットテスト何かをする方法ですか?重要な問題は、単体テスト用にHttpServletRequest
のインスタンスを作成する方法です。
Fwiw私はいくつかのグーグル・グーグルを試してみました。しかし、getRequestURL
が戻りたいものを返すようにクラスをモックすると(黙っていると缶詰の値を返すいくつかのメソッドをオーバーライドしているので、例を取る)、その時点で実際にコードをテストしているわけではありません。私もhttpunitライブラリを試しましたが、それはまた助けにはなりません。 、私は仕事にサーブレットオブジェクトを必要とする方法をテストするためにこれを使用することができます
public class TestLogin {
@Test
public void testGetMethod() throws IOException {
// Mock up HttpSession and insert it into mocked up HttpServletRequest
HttpSession session = mock(HttpSession.class);
given(session.getId()).willReturn("sessionid");
// Mock up HttpServletRequest
HttpServletRequest request = mock(HttpServletRequest.class);
given(request.getSession()).willReturn(session);
given(request.getSession(true)).willReturn(session);
HashMap<String,String[]> params = new HashMap<>();
given(request.getParameterMap()).willReturn(params);
// Mock up HttpServletResponse
HttpServletResponse response = mock(HttpServletResponse.class);
PrintWriter writer = mock(PrintWriter.class);
given(response.getWriter()).willReturn(writer);
.....
希望を:
テスト中のシステムではなく、依存関係を嘲笑しています。スコープにないため、ここでgetRequestURLをテストしていません。 –
[Javaサーブレットのユニットテスト]の可能な複製(http://stackoverflow.com/questions/90907/unit-testing-a-java-servlet) – worpet