2017-10-20 61 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

谢谢!!它的工作正常。 –