关于servlets:如何对ServletResponse Java进行单元测试

How to unit test ServletResponse Java

本问题已经有最佳答案,请猛点这里访问。

这是我的servlet代码:

1
2
3
4
5
6
String foo ="foo";
Foo foo = Foofactory.getfoos(foo);
String locationURI;
String redirectURI ="http://" + request.getServerName() +":" +request.getServerPort() +"/foo";
locationURI = foo.getRequestBuilder(redirectURI);
response.sendRedirect(locationURI);

这里我想测试一下IOExceptionresponse.sendRedirect(locationURI);的关系。

我不能使用mockito当功能,因为它表明无效方法不能使用。

1
2
3
4
5
6
7
8
9
10
@Test(expected = IOException.class)
public void testService_CheckIOException() throws ServletException,     IOException {
    when(mockFoofactory.getfoos(Matchers.eq("foo"))).thenReturn(mockfoo);
    when(mockRequest.getServerName()).thenReturn("serverName");
    when(mockRequest.getServerPort()).thenReturn(80);
    when(mockfoo.getRequestBuilder(Matchers.eq("http://serverName:80foo")))
        .thenReturn("locationURI");
    Servlet.service(mockRequest, mockResponse);
    //This line doesn't work in mockito
    when(mockResponse).sendRedirect("locationURI")).thenThrow(IOException.class);

我是否可以抛出IOException并测试发送重定向?我想测试一下sendRedirect方法抛出的IOExceptionIllegalStateException


您可以将Mockitovoid方法一起使用。

1
doNothing().when(mock).voidMethod();

以同样的方式使用doThrow(new IOException())