java - 测试一个向前重定向的无效方法

标签 java unit-testing junit easymock

如何测试使用 RequestDispatcher 重定向我的 void 方法?

到目前为止我做了什么。

public void testAuthAction_userNull() {
    HttpServletRequest requestMock = createMock(HttpServletRequest.class);
    HttpServletResponse responseMock = createMock(HttpServletResponse.class);
    expect(requestMock.getSession().getAttribute("user")).andReturn(null);
    replay(requestMock);

    AuthAction action = new AuthAction();
    RequestDispatcher rd = requestMock.getRequestDispatcher("/User/login.jsp");
}

我要测试的方法是。

public void execute(HttpServletRequest request, HttpServletResponse response) {
    User user = (User) request.getSession().getAttribute("User");
    try {
        if(user == null) {
            RequestDispatcher rd = request.getRequestDispatcher("/User/login.jsp");
            if(rd != null)
                rd.foward(request, response);
        } else {/* */}
    }
    catch(Exception e){/* */}
}

我正在使用 JUnit 和 EasyMock。

最佳答案

您需要创建一个模拟的 RequestDispatcher 期望被转发,并从您的模拟中返回它:

RequestDispatcher dispatcherMock = createMock(RequestDispatcher.class);
expect(requestMock.getRequestDispatcher("/User/login.jsp"))
    .andReturn(dispatcherMock);
// Expect to be forwarded.
dispatcherMock.forward(requestMock, responseMock);
EasyMock.expectLastCall().once();
replay(dispatcherMock);
replay(requestMock);

// Run your test on whatever instance has `execute`:
someInstance.execute(requestMock, responseMock);

关于java - 测试一个向前重定向的无效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50106350/

相关文章:

java - 在 Qpid 上调用的 RabbitMQ Java API queuePurge() 方法返回消息计数为零的 PurgeOK 响应

c# - 如何制作 System.Net.Mail MailMessage 的模型?

java - 错误 :Invalid use of argument matchers! 预计有 0 个匹配器,已记录 1 个

java - 需要有关 EJB3 bean 类型与单元测试的建议

unit-testing - gradle:排除一些测试,但允许显式执行

java - 在 ListView 中编辑文本?

java - NoClassDefFoundError 即使包含 .jar 文件

java - 如何在不明确指定的情况下获取 Magento Product 的所有附加属性

javascript - 每次测试后重置服务对象

java - 在 Android 中运行单元测试时, Intent 解析为不同的进程