【问题标题】:Junit : Cannot test header information in the responseJunit:无法测试响应中的标头信息
【发布时间】:2014-05-12 09:56:40
【问题描述】:

我是 JUnit 的新手。我正在尝试为 java 过滤器编写一个测试用例。以下是过滤代码-

    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException,
        IOException {
    response.addHeader("Access-Control-Allow-Origin", "*");
    if (request.getHeader("Access-Control-Request-Method") != null && "OPTIONS".equals(request.getMethod())) {
        response.addHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");
        response.addHeader("Access-Control-Allow-Headers", "X-Requested-With,Origin,Content-Type, Accept, authSessionId");
    }
    filterChain.doFilter(request, response);
}

下面是我写的测试用例——

   @Test
   public void testSomethingAboutDoFilter() throws ServletException, IOException {
    CorsFilter cf = new CorsFilter();
    HttpServletRequest req = mock(HttpServletRequest.class);
    HttpServletResponse rsp = mock(HttpServletResponse.class);
    FilterChain mockChain = mock(FilterChain.class);
    rsp.addHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");
    when(req.getHeader("Access-Control-Request-Method")).thenReturn("abc");
    when(req.getMethod()).thenReturn("OPTIONS");
    cf.doFilterInternal(req, rsp, mockChain);
    String rspHeader = rsp.getHeader("Access-Control-Allow-Methods");
    System.out.println(rspHeader);
    }

我的想法是检查添加到响应中的内容并匹配它以验证测试用例。但是由于某种原因,当我检查时我得到了 null -

   rsp.getHeader("Access-Control-Allow-Methods");

我试图找出这背后的原因,发现标题本身没有设置。这背后的原因是什么,在这种情况下如何测试代码。

【问题讨论】:

    标签: java junit mockito junit4 testcase


    【解决方案1】:

    rsp.addHeader 也是一个模拟方法,您在那里设置的值不会通过rsp.getHeader 返回。但是您可以验证是否使用 verify 方法调用了模拟对象上的方法。如果你真的想让addHeadergetHeader 一起工作,你应该考虑使用一个由真实对象支持的间谍对象。我会 verify 使用 verify(rsp).addHeader(...) 使用正确的参数调用 addHeader

    【讨论】:

    猜你喜欢
    • 2013-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多