我有以下代码。

    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())打印null,而response不打印null。

如何获得响应对象?

Mockito,Struts2,JUnit

最佳答案

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

我检查了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);


现在可以了!

10-02 21:08