Java 如何测试doFilter方法?
我尝试测试此方法:Java 如何测试doFilter方法?,java,junit,mockito,springmockito,Java,Junit,Mockito,Springmockito,我尝试测试此方法: public void doFilter(final ServletRequest request, final ServletResponse response, final FilterChain chain) throws IOException, ServletException { final HttpServletRequest httpRequest = (HttpServletRequest) request; final HttpS
public void doFilter(final ServletRequest request, final ServletResponse response,
final FilterChain chain) throws IOException, ServletException {
final HttpServletRequest httpRequest = (HttpServletRequest) request;
final HttpServletResponse httpResponse = (HttpServletResponse) response;
if (httpRequest.getSession(true).getAttribute("connected") == null) {
httpResponse.sendRedirect(request.getServletContext().getContextPath() + "/");
} else {
chain.doFilter(request, response);
}
}
以下是我的测试:
@Test
public void testDoFilter() throws IOException, ServletException {
MockServletContext servletContext = new MockServletContext();
MockHttpServletRequest request = new MockHttpServletRequest(servletContext);
MockHttpServletResponse response = new MockHttpServletResponse();
MockHttpSession session = new MockHttpSession();
FilterChain chain = Mockito.mock(FilterChain.class);
String url = "/private/";
request.setContextPath("/private/");
UserFilter userfilter = new UserFilter();
userfilter.doFilter(request, response, chain);
Mockito.verify(chain, Mockito.times(0)).doFilter(request, response);
request.setSession(session);
request.getSession().setAttribute("connected", "toto");
Mockito.verify(chain, Mockito.times(1)).doFilter(request, response);
}
但是最后一个Mockito.verify不运行。我什么时候也不明白
request.getAttribute("connected")
我获得了“toto”
,但当我获得时null
request.getSession(true).getAttribute("connected").
你能解释一下并帮助我吗?
感谢最后的
Mockito.verify(chain,Mockito.times(1)).doFilter(request,response)代码>失败,因为请求的会话包含键/值“已连接”,因此未调用doFilter
关于request.getAttribute(“connected”)
vsrequest.getSession(true).getAttribute(“connected”)
,我得到了第一个null
,第二个toto