[英]How can i test the doFilter method?
I try to test this method: 我尝试测试此方法:
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);
}
}
Here my test: 这是我的测试:
@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);
}
but the last Mockito.verify don't run. 但最后一个Mockito.verify不会运行。 I don't also understand when I do
我什么时候也不懂
request.getAttribute("connected")
I obtain "toto"
but null
when I do 我获得
"toto"
但获得null
request.getSession(true).getAttribute("connected").
Can you explain and help me please? 您能给我解释一下吗? Thanks
谢谢
The last Mockito.verify(chain, Mockito.times(1)).doFilter(request, response);
最后一个
Mockito.verify(chain, Mockito.times(1)).doFilter(request, response);
fails because, request's session contains the key/value "connected" , so doFilter
didn't called. 失败,因为请求的会话包含键/值“ connected” ,因此未调用
doFilter
。
What about request.getAttribute("connected")
vs request.getSession(true).getAttribute("connected")
, I got null
for the first, and toto
for the second. 怎么样
request.getAttribute("connected")
vs request.getSession(true).getAttribute("connected")
,我第一个为null
,第二个为toto
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.