我正在尝试为GWT Servlet编写单元测试。
因此,我需要嘲笑getThreadLocalRequest()
的{{1}}函数,这样我才能获得NPE。
该函数受到保护,因此根据mocktio faq,只要我在同一个包中,就应该可以模拟它。 所以我尝试了以下内容:
AbstractRemoteServiceServlet
但是我得到以下错误:函数不可见:
HttpServletRequest request = mock(HttpServletRequest.class);
svc = spy(new GreetingServiceImpl());
doReturn(request).when(svc).getThreadLocalRequest();
我很感激有关该问题的任何建议或有关更好地解决我的问题的提示。
答案 0 :(得分:0)
Mockito无法修改java规则的可见性,when(svc)
的返回值不在getThreadLocalRequest()
可见的包中。
确保您的测试类与AbstractRemoteServiceServlet
位于同一个包中,或通过反射调用getThreadLocalRequest
方法:
Method getThreadLocalRequestMethod = AbstractRemoteServiceServlet.class.getDeclaredMethod("getThreadLocalRequest");
Object target = doReturn(request).when(svc);
Object regetThreadLocalRequestMethod.invoke(target);