林不知道怎樣來寫我想要做一個接口的模擬對象,所以我提前Java單元測試的創建,做一些工作
我目前正在寫單元測試的一些遺留道歉代碼作爲我工作的一部分。其中一個代碼是一個(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的,我真的不想做的方法。
預先感謝您:)我要試着重新字這
如果你使用JMock,你只需要實現被調用的方法。有關示例,請參閱JMock文檔。 –
嗨喬希,你想要測試的反應是什麼?如果你不知道或不關心URL的內容,那麼僅僅測試它不是null就足夠了。 –
我關心網址是什麼,這是令人討厭的事情。 我可以測試sendRedirect方法是用一個(非null)字符串調用的:response.sendRedirect(with(a(String.class)));但我想根據返回的URL的值運行測試。 –