HttpServletRequest オブジェクトに対して何らかの作業を行うサービスがあり、具体的には request.getParameterMap と request.getParameter を使用してオブジェクトを構築します。
文字列の形で提供されたURLを取得する簡単な方法があるかどうか疑問に思っていました。
String url = "http://www.example.com/?param1=value1¶m";
それを HttpServletRequest オブジェクトに簡単に変換して、単体テストでテストできるようにするにはどうすればよいでしょうか? または、少なくとも request.getParameterMap と request.getParameter が正しく機能するようにするにはどうすればよいでしょうか?
ベストアンサー1
MockHttpServletRequest の使用方法は次のとおりです。
// given
MockHttpServletRequest request = new MockHttpServletRequest();
request.setServerName("www.example.com");
request.setRequestURI("/foo");
request.setQueryString("param1=value1¶m");
// when
String url = request.getRequestURL() + '?' + request.getQueryString(); // assuming there is always queryString.
// then
assertThat(url, is("http://www.example.com:80/foo?param1=value1¶m"));