Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ServletRequest筛选器测试用例_Java_Unit Testing_Servlets_Junit_Mockito - Fatal编程技术网

Java ServletRequest筛选器测试用例

Java ServletRequest筛选器测试用例,java,unit-testing,servlets,junit,mockito,Java,Unit Testing,Servlets,Junit,Mockito,我有一个过滤器,看起来像这样: @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // Get the servlet request HttpServletRequest req = (HttpServletRequest) request;

我有一个过滤器,看起来像这样:

@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

    // Get the servlet request
    HttpServletRequest req = (HttpServletRequest) request;

    ... Some logic code here ...

    if (!accepted.contains(req.getRequestURI())) {
        HttpServletResponse res = (HttpServletResponse) response;
        res.sendError(404, "Some Error");
        return;
    }

    // Pass the request along the filter chain
    chain.doFilter(request, response);
}
HttpServletRequest request = mock(HttpServletRequest.class);
when(request.getRequestURI()).thenReturn("the test URI");
问题在于我的测试用例。通常我会使用mockito来模拟
HttpServletRequest
类似这样的内容:

@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

    // Get the servlet request
    HttpServletRequest req = (HttpServletRequest) request;

    ... Some logic code here ...

    if (!accepted.contains(req.getRequestURI())) {
        HttpServletResponse res = (HttpServletResponse) response;
        res.sendError(404, "Some Error");
        return;
    }

    // Pass the request along the filter chain
    chain.doFilter(request, response);
}
HttpServletRequest request = mock(HttpServletRequest.class);
when(request.getRequestURI()).thenReturn("the test URI");

然而,
HttpServletRequest
是通过强制转换在方法内部获得的,我不确定测试各种URI请求的最佳方法。

您仍然可以使用doFilter调用servlet,如:

HttpServletRequest request = mock(HttpServletRequest.class);
when(request.getRequestURI()).thenReturn("the test URI");
HttpServletResponse response = mock(HttpServletResponse.class);
//mock method calls on response, replay
myServlet.filter(request, response);

即使它内部进行类型转换也没问题。

不用担心,伙计。。这是常有的事。。除你之外,还有其他人在解决问题。