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");
내가이 뒤에 이유가 될 수있는 것을 찾는 노력하고 헤더 자체가 설정되어 있지 않은 것을 발견 - 내가 확인하지만 어떤 이유로 나는 널을 얻고있다. 무엇이 뒤에 이것의 이유가되어야하며 어떻게 그 코드를 테스트 할 수 있는가.
예를 들어 주시겠습니까 – monal86
'verify (rsp) .addHeader ("Access-Control-Allow-Methods")'를 사용해보십시오. matcher에 대한 더 복잡한 예제는 http://site.mockito.org/mockito/docs/current/org/mockito/Mockito.html#3을 참조하십시오. – Drunix