はい、あります。ここに 1 つの方法があります。ここでは、HttpServletRequest と HttpServletResponse をモックし、expectation を定義してメソッド呼び出しをアサートしています。ここでは JMock を使用しています。
public class SampleFilterTest {
private Mockery context = new Mockery();
private SampleFilter sampleFilter = new SampleFilter();
private HttpServletRequest request;
private HttpServletResponse response;
@BeforeMethod
public void setUp() throws Exception {
request = context.mock(HttpServletRequest.class);
response = context.mock(HttpServletResponse.class);
}
@Test
public void sampleFilterTest() throws IOException, ServletException {
context.checking(new Expectations() {{
oneOf(request).getParameter("param");
will(returnValue(null));
oneOf(response).sendError(400, "param can't be null");
}});
sampleFilter.doFilter(request, response, null);
}
}
ここでは、request.getParmeter が「param」で呼び出されたときに null を返し、response.sendError を 400 で返し、「param can't be null」パラメータを呼び出す必要があると言っています。