I am using Mockito for Testing Filter,I am trying to test do filter chain method which requires HTTPServlet request as parameter, I tried mocking both Servlet Request and HTTPServlet Request but I am receiving errors, when using HTTPServlet request as null pointer exception, & with Servlet Request as it cannot be cast. Any leads is appreciated.
My Filter looks like,
public class CheckerFilter implements Filter {
private final UserDetails userDetails;
priate final UserAuthentication userAuthentication
public CheckerFilter(UserDetails userDetails,UserAuthentication userAuthentication ){
this.userDetails = userDetails;
this.userAuthentication = userAuthentication;
}
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)throws IOException, ServletException{
final HttpServletRequest request = (HttpServletRequest)req;
final String method = request.getMethod();
final String contentType = request.getContentType();
boolean result = evaluate();
....
if(result)filter.doChain(request, res, chain);
else res.sendRedirect('\XXX');
}
}
Test looks like,
public class CheckerFilterTest {
@InjectMocks private CheckerFilter checkerFilter;
final UserDetails userDetails =mock(UserDetails.class);
final UserAuthentication userAuthentication = mock (UserAuthentication.class);
@Mock ServletRequest mockServeletRequest;
@Mock ServletResponse mockResponse;
@Mock HTTPServeltRequest mockHttprequest;
public void setUp (){
checkerFilter = new CheckerFilter(userDetails, userAuthentication);
}
@Test
public void Evaluate_returnsTrue(){
when(evaluate()).thenReturn(true);
checkerFilter.doFilter(mockHTTPrequest, mockResponse, mockchain);
//Error denoting mockHTTPRequest as null pointer exception.
//checkerFilter.doFilter(mockServletrequest, mockResponse, mockchain);Error mentioning Servlet Request cannot be cast to HTTPServlet Request.
}
}
The mocks need to be initialised. You can use MockitoAnnotations.initMocks(this) in the setup() method to initialise the @Mock annotated mocks. Also you have to use the http servlet request mock and not a servlet request mock as it cannot be downcasted
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.