Java GWT RPCServlet-Junit+;getThreadLocalRequest
在我的RPCServlet中,我使用AbstractRemoteServiceServlet.getThreadLocalRequest()方法来获取HttpSession。现在我想对它进行单元测试。我正在使用Mockito,并认为我可以模拟一切,但该方法是最终的和受保护的Java GWT RPCServlet-Junit+;getThreadLocalRequest,java,gwt,junit,mockito,rpc,Java,Gwt,Junit,Mockito,Rpc,在我的RPCServlet中,我使用AbstractRemoteServiceServlet.getThreadLocalRequest()方法来获取HttpSession。现在我想对它进行单元测试。我正在使用Mockito,并认为我可以模拟一切,但该方法是最终的和受保护的 在尝试获取会话的最后,是否有其他方法对AbstractRemoteServiceServlet.getThreadLocalRequest().getSession()进行单元测试。在我们的案例中,我们通过以下方式解决这种情
在尝试获取会话的最后,是否有其他方法对AbstractRemoteServiceServlet.getThreadLocalRequest().getSession()进行单元测试。在我们的案例中,我们通过以下方式解决这种情况: 使用GUICE获取实例(使它们在测试的给定部分可用)
RequestUitl
对象包含与会话相关的所有内容和更多服务器内容(这对于您的问题并不重要:D)。这里的重要部分是您可以访问gethreadRequest()
,因此您可以访问getSession()
方法
有什么问题?实例中不能有真正的HttpServletRequest
对象,因此需要模拟它们。为此,我们在顶部指定了绑定规则
最后,您的测试应该是:
@RunWith(...)
@GuiceModules({TestServerModule.class, ....})
public class YourTest extends junit.framework.TestCase {
@Inject RequestUtil requestUtil;
....
@Test public void
test_session_after_doing_something() {
//GIVEN
HttpSession mockedSession = requestUtil.getThreadRequest().getSession();
....
}
....
}
对不起,我解释得不好,最近我很忙,我还想帮助别人。有时候,我很难在这样的环境中保持积极。如果你有任何问题,就问!:谢谢!
@RunWith(...)
@GuiceModules({TestServerModule.class, ....})
public class YourTest extends junit.framework.TestCase {
@Inject RequestUtil requestUtil;
....
@Test public void
test_session_after_doing_something() {
//GIVEN
HttpSession mockedSession = requestUtil.getThreadRequest().getSession();
....
}
....
}