2014-05-12 2 views
2

JUnit을 처음 사용합니다. java 필터에 대한 테스트 케이스를 작성하려고합니다.Junit : 응답의 헤더 정보를 테스트 할 수 없습니다.

protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, 
     IOException { 
    response.addHeader("Access-Control-Allow-Origin", "*"); 
    if (request.getHeader("Access-Control-Request-Method") != null && "OPTIONS".equals(request.getMethod())) { 
     response.addHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE"); 
     response.addHeader("Access-Control-Allow-Headers", "X-Requested-With,Origin,Content-Type, Accept, authSessionId"); 
    } 
    filterChain.doFilter(request, response); 
} 

다음은 내가 작성한 테스트 케이스입니다 - -

@Test 
    public void testSomethingAboutDoFilter() throws ServletException, IOException { 
    CorsFilter cf = new CorsFilter(); 
    HttpServletRequest req = mock(HttpServletRequest.class); 
    HttpServletResponse rsp = mock(HttpServletResponse.class); 
    FilterChain mockChain = mock(FilterChain.class); 
    rsp.addHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE"); 
    when(req.getHeader("Access-Control-Request-Method")).thenReturn("abc"); 
    when(req.getMethod()).thenReturn("OPTIONS"); 
    cf.doFilterInternal(req, rsp, mockChain); 
    String rspHeader = rsp.getHeader("Access-Control-Allow-Methods"); 
    System.out.println(rspHeader); 
    } 
내가 생각하고있는 개념은 응답과 일치하는 추가 된 것을 확인하는 것입니다

필터 코드는 다음과 테스트 케이스의 유효성을 검사합니다.

rsp.getHeader("Access-Control-Allow-Methods"); 

내가이 뒤에 이유가 될 수있는 것을 찾는 노력하고 헤더 자체가 설정되어 있지 않은 것을 발견 - 내가 확인하지만 어떤 이유로 나는 널을 얻고있다. 무엇이 뒤에 이것의 이유가되어야하며 어떻게 그 코드를 테스트 할 수 있는가.

답변

2

rsp.addHeader 또한 조롱 된 방법이며 설정 한 값은 rsp.getHeader을 통해 반환되지 않습니다. 그러나 verify 메소드를 사용하여 모의 객체의 메소드가 호출되는지 확인할 수 있습니다. addHeadergetHeader과 함께 사용하려면 실제 개체가 뒷받침되는 스파이 개체를 사용해야합니다. verify(rsp).addHeader(...)을 사용하여 올바른 인수로 addHeader이 호출 된 verify이됩니다.

+0

예를 들어 주시겠습니까 – monal86

+0

'verify (rsp) .addHeader ("Access-Control-Allow-Methods")'를 사용해보십시오. matcher에 대한 더 복잡한 예제는 http://site.mockito.org/mockito/docs/current/org/mockito/Mockito.html#3을 참조하십시오. – Drunix