2017-10-20 3 views
1
Class Permission implements ContainerRequestContext 
{ 

    @context 
    HttpServletRequest servletRequest; 

    public void filter(ContainerRequestContext containerRequestContext) throws IOException 
    { 
     String Path=servletRequest.getPathInfo(); 

     int id=containerRequestContext.getId(); 

     if(id==null){ 
      containerRequestContext.abortWith(new ServerResponse(ExceptionUtil.getErrorMessageObject(...),errorCode,new Header<Object>())); 
     } 
    } 
} 

필터 메서드에 대한 테스트 작성 방법. 나는 ContainerReqeustContext를 조롱 할 수있다. 그러나 HttpServletRequest를 모의하는 방법은 filter() 메소드의 입력이 아니기 때문입니다.필터 메서드의 입력이 아닌 HttpServletRequest를 모의하는 방법

답변

0

당신은 @InjectMocks 주석 사용할 수 있습니다

@RunWith(MockitoJUnitRunner.class) 
class Test { 

    @InjectMocks 
    private Permission permission; 
    @Mock 
    private HttpServletRequest servletRequest; 

    @Test 
    public void test() 
    { 
     permission.filter(...); 
    } 
} 

을 또는 당신은 단순히 세터를 사용할 수 있습니다.

Class Permission implements ContainerRequestContext 
{ 
    @context 
    HttpServletRequest servletRequest; 

    public void filter(ContainerRequestContext containerRequestContext) throws IOException 
    { 
      ... 
    } 

    void setHttpServletRequest(HttpServletRequest servletRequest) { 
    this.servletRequest = servletRequest; 
    { 
} 

@RunWith(MockitoJUnitRunner.class) 
class Test { 

    private Permission permission = new Permission(); 
    @Mock 
    private HttpServletRequest servletRequest; 

    @Test 
    public void test() 
    { 
     permission.setHttpServletRequest(servletRequest); 
     permission.filter(...); 
    } 
    } 
+0

감사합니다. 잘 작동합니다. –