やりたいことをどう言葉にすればいいかわからないので、あらかじめお詫び申し上げます
私は現在、仕事の一環として、いくつかのレガシー コードの単体テストを書いています。これらのコードの 1 つは、リダイレクト URL を提供する (Java) HttpServlet です。基本的に、コードは次のようになります。
public class Server extends HttpServlet {
...
public void doGet(HttpServletRequest request, HttpServletResponse response) {
...
String url = "....";
.. // do some work to create that url
response.sendRedirect(url);
}
...
}
このクラスの単体テストの一環として、作成されたリダイレクト URL をテストしたいと思います。だから私は次の行に沿って何かをします:
Server server = new Server();
..
server.doGet(request, response);
String url = getRedirectURL(response);
// test URL returned
...
応答から「getRedirectURL」を取得する最良の方法は何ですか?
現在、JunitとJmock (どちらも最新バージョン) を使用しています。モック HttpServletRequest を作成し、モック HttpServletResponse を簡単に作成して sendRedirect(url) メソッドの期待値を追加できます (URL の期待される形式がわかっている場合)。
私の試みは、url の値を保存し、後でそれを取得できるようにする HttpServletResponse を実装して、モック クラスを作成することでした。すなわち
private class MockHttpServletResponse implements HttpServletResponse {
String url;
public String getURL() {
return url;
}
public void sendRedirect(String url) {
this.url = url;
}
}
ただし、インターフェイスを実装しているため、Java は、私が本当にやりたくない HttpServletResponse のすべてのメソッドを実装することを望んでいます。
前もってありがとう:)私はこれを言い換えてみます