Я не уверен, как сказать, что я хочу сделать, поэтому заранее прошу прощения
В настоящее время я пишу модульные тесты для некоторого устаревшего кода как часть моей работы.Одним из этих кусочков кода является (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 (обе последние версии).Я создаю Mock HttpServletRequest и могу легко создать фиктивный HttpServletResponse и добавить ожидание для метода sendRedirect (url), ЕСЛИ я знал ожидаемый формат URL, однако я не знаю.
Моя попытка была создатьфиктивный класс, реализующий HttpServletResponse, который сохранил значение URL, а затем позволил мне получить его позже.то есть
private class MockHttpServletResponse implements HttpServletResponse {
String url;
public String getURL() {
return url;
}
public void sendRedirect(String url) {
this.url = url;
}
}
Однако, поскольку он реализует интерфейс, Java хочет, чтобы я реализовал ВСЕ методы в HttpServletResponse, которые я действительно не хочу делать.
Заранее спасибо :) iпопробую и перефразирую это