【问题标题】:Mockito test returning NullInsteadOfMockExceptionMockito 测试返回 NullInsteadOfMockException
【发布时间】:2015-11-27 03:47:37
【问题描述】:

我正在尝试测试登录页面的 servlet,但 Mock 测试抛出异常

LoginServlet

/**
 * @see HttpServlet#HttpServlet()
 */
public LoginServlet() {
    super();
    // TODO Auto-generated constructor stub
}

/**
 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
 *      response)
 */
protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    // TODO Auto-generated method stub

    HttpSession session = request.getSession(true);
    boolean result = false;
    String username = request.getParameter("username");
    String password = request.getParameter("password");
    result = obj.validateLogin(username, password);
    if (result) {
        session.setAttribute("username", username);
        response.sendRedirect("UserHome.jsp");
    } else {
        response.sendRedirect("login.jsp");

    }
    return;
}

/**
 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
 *      response)
 */
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    doGet(request, response);
}

}

MockTest : 这是我为登录写的测试用例

public class LoginServletMockTest {

@Test
public void testServlet() throws Exception {
    HttpServletRequest request = mock(HttpServletRequest.class);
    HttpServletResponse response = mock(HttpServletResponse.class);
    HttpSession session = request.getSession(true);
    when(request.getParameter("username")).thenReturn("garwitauday");
    when(request.getParameter("password")).thenReturn("123");
    when(request.getSession()).thenReturn(session);

    doNothing().when(session).setAttribute("username", "garwitauday");
    doNothing().when(response).sendRedirect("Userhome.jsp");

    LoginServlet loginservlet = new LoginServlet();
    loginservlet.doPost(request, response);

    verify(session).setAttribute("username", "garwitauday");
    verify(response).sendRedirect("Userhome.jsp");

}

}

我无法解决这个问题

【问题讨论】:

  • 你遇到了什么异常?

标签: java testing mockito


【解决方案1】:

也为 HttpSession 创建 mockito 对象,并在 request 中设置 mockito session 对象。

并继续执行相同的 do(..).when(..) 或 when(..).thenReturn(..) 来模拟调用。

确保在请求和会话对象中设置属性和参数,以便于测试。

如果你的服务是基于 mvc 的,最好使用 MockMvc 和它的构建器对象。

【讨论】:

    猜你喜欢
    • 2020-09-10
    • 2023-03-25
    • 2019-11-03
    • 1970-01-01
    • 1970-01-01
    • 2017-07-22
    • 2015-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多