gpt4 book ai didi

unit-testing - 如何创建用于单元测试的 HttpServletRequest 实例?

转载 作者:行者123 更新时间:2023-12-04 01:51:46 28 4
gpt4 key购买 nike

在对 SO 进行一些搜索时,我遇到了 this从 URL 中提取“appUrl”的一段代码:

public static String getAppUrl(HttpServletRequest request)
{
String requestURL = request.getRequestURL().toString();
String servletPath = request.getServletPath();
return requestURL.substring(0, requestURL.indexOf(servletPath));
}

我的问题是一个单元如何测试这样的东西?关键问题是如何创建HttpServletRequest的实例进行单元测试?

Fwiw 我尝试了一些谷歌搜索,大多数回复都围绕着 mock 类(class)。但是,如果我模拟该类,以便 getRequestURL 返回我希望它返回的内容(举个例子,因为模拟本质上会覆盖一些返回 jar header value 的方法),那么我那时并没有真正测试代码.我也尝试了 httpunit 库,但这也无济于事。

最佳答案

我使用 mockito,这是我用来模拟它的测试方法中的代码块:

public class TestLogin {
@Test
public void testGetMethod() throws IOException {
// Mock up HttpSession and insert it into mocked up HttpServletRequest
HttpSession session = mock(HttpSession.class);
given(session.getId()).willReturn("sessionid");

// Mock up HttpServletRequest
HttpServletRequest request = mock(HttpServletRequest.class);
given(request.getSession()).willReturn(session);
given(request.getSession(true)).willReturn(session);
HashMap<String,String[]> params = new HashMap<>();
given(request.getParameterMap()).willReturn(params);

// Mock up HttpServletResponse
HttpServletResponse response = mock(HttpServletResponse.class);
PrintWriter writer = mock(PrintWriter.class);
given(response.getWriter()).willReturn(writer);

.....

希望有所帮助,我用它来测试需要 servlet 对象才能工作的方法。

关于unit-testing - 如何创建用于单元测试的 HttpServletRequest 实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39357196/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com