簡體   English   中英

如何模擬不是過濾器方法輸入的HttpServletRequest

[英]How to Mock a HttpServletRequest that is not the input of filter method

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()方法的輸入。

您可以使用@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(...);
     }
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM