【发布时间】: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