模拟HttpServletResponse并将其传递给ServletActionContext - 并获取响应对象

时间:2014-10-24 18:51:51

标签: java servlets junit struts2 mockito

我有以下代码。

    HttpServletResponse response = mock(HttpServletResponse.class);
    System.out.println("Response: " + response); // Prints "Mock for HttpServletResponse, hashCode: 2051435028"

    ServletActionContext.setResponse(response);
    System.out.println("Get Response: " + ServletActionContext.getResponse()); // Prints null.
设置时,

ServletActionContext.getResponse())打印为空,而response不为空。

如何获取响应对象?

Mockito,Struts2,JUnit

1 个答案:

答案 0 :(得分:0)

好。我有一个解决方法。对于其他人的帮助...

我检查了getResponse()

的代码
public static HttpServletResponse getResponse() {
    return (HttpServletResponse) ActionContext.getContext().get(HTTP_RESPONSE);
}

所以我已经将一个模拟context对象传递给ServletActionContext。所以在传递它之前,我正在模仿像这样的上下文调用。

actionContext = mock(ActionContext.class);
when(actionContext.get(org.apache.struts2.StrutsStatics.HTTP_RESPONSE)).thenReturn(response);

现在有效!