2017-10-20 13 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をモックすることができます。しかし、それはfilter()メソッドの入力ではないので、HttpServletRequestをモックする方法。フィルタメソッドの入力ではない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

ありがとう!!そのうまく動作します。 –

関連する問題