您编写的测试的一些主要问题:
-
-
init
以及
destroy
doFilter
方法。
-
当我们创建任何模拟对象时,我们使用期望来定义我们期望对模拟对象进行的调用,并让它们在需要时返回一些存根值。
现在,我已经尝试编写正确的测试来断言您要测试的两个案例:
@Test
public void testResponse_for_RequestWithoutCcid() throws IOException, ServletException {
HttpServletRequest httpServletRequest = mock(HttpServletRequest.class);
HttpServletResponse httpServletResponse = mock(HttpServletResponse.class);
FilterChain filterChain = mock(FilterChain.class);
CorrelationIdServletFilter correlationIdServletFilter = new CorrelationIdServletFilter();
expect(httpServletRequest.getHeader(CORRELATION_ID_HEADER_NAME)).andReturn(""); // Empty correlation id in the request
Capture capturedCorrelationIdRaw = newCapture();
httpServletResponse.addHeader(CORRELATION_ID_HEADER_NAME, capture(capturedCorrelationIdRaw));
expectLastCall(); // used for void methods in EasyMock framework
filterChain.doFilter(httpServletRequest, httpServletResponse);
expectLastCall();
CorrelationIdServletFilter.doFilter(httpServletRequest, httpServletResponse,
filterChain);
assertNotEmpty(capturedCorrelationIdRaw.getValue());
verify(httpServletRequest, times(1))
.getHeader(CORRELATION_ID_HEADER_NAME);
verify(httpServletResponse, times(1))
.addHeader(CORRELATION_ID_HEADER_NAME, anyString);
}
这个测试需要根据实际使用的测试框架进行更新,但是我已经尽了最大努力让您了解测试应该是什么样子的。