2014-12-15 6 views
0

나는이 같은 형태의 필터가 있습니다ServletRequest의 필터 테스트 케이스

@Override 
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { 

    // Get the servlet request 
    HttpServletRequest req = (HttpServletRequest) request; 

    ... Some logic code here ... 

    if (!accepted.contains(req.getRequestURI())) { 
     HttpServletResponse res = (HttpServletResponse) response; 
     res.sendError(404, "Some Error"); 
     return; 
    } 

    // Pass the request along the filter chain 
    chain.doFilter(request, response); 
} 

문제는 내 테스트 케이스입니다. HttpServletRequest 내가 여러 URI 요청을 테스트하는 가장 좋은 방법 확실하지 않다 캐스트 방법 내에서 얻어진다

HttpServletRequest request = mock(HttpServletRequest.class); 
when(request.getRequestURI()).thenReturn("the test URI"); 

그러나 사실 : 일반적으로 나는이 같은 HttpServletRequest 뭔가를 조롱 mockito을 사용합니다.

답변

2

당신은 여전히 ​​같은 doFilter와 서블릿을 호출 할 수하여야한다 : 괜 찮 아

HttpServletRequest request = mock(HttpServletRequest.class); 
when(request.getRequestURI()).thenReturn("the test URI"); 
HttpServletResponse response = mock(HttpServletResponse.class); 
//mock method calls on response, replay 
myServlet.filter(request, response); 

내부적으로 캐스팅을 입력 않는 경우에도 마찬가지입니다.

+0

이제 나는 바보처럼 느껴진다 ... – tarka

+1

걱정하지 마라. .. 일어난다. .. 그리고 당신을 제외하고 항상 문제를 해결하기 위해있다. – SMA