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>()));
        }
    }
}

How to write the Test for the filter method. I am able to mock the ContainerReqeustContext. But how to mock the HttpServletRequest since it is not the input of the filter() method.

K.kr
  • 35
  • 4

1 Answers1

0

You can use @InjectMocks annotation:

@RunWith(MockitoJUnitRunner.class)
class Test {

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

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

Or you can use a simply setter.

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(...);
     }
  }
alayor
  • 4,537
  • 6
  • 27
  • 47