我不知道该怎么说我想做的事,所以我提前道歉
作为我工作的一部分,我目前正在为一些遗留代码编写单元测试。这些代码之一是(Java)HttpServlet,它提供了一个重定向 URL。基本上代码如下所示:
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,如果我知道 URL 的预期格式,我可以轻松地创建一个模拟 HttpServletResponse 并添加对 sendRedirect(url) 方法的期望,但我不知道。
我的尝试是创建一个模拟类,实现 HttpServletResponse 存储 url 的值,然后允许我稍后检索它。IE
private class MockHttpServletResponse implements HttpServletResponse {
String url;
public String getURL() {
return url;
}
public void sendRedirect(String url) {
this.url = url;
}
}
但是,因为它实现了一个接口,Java 希望我实现 HttpServletResponse 中我真的不想做的所有方法。
提前谢谢你:)我会尝试重新措辞