如何为单元测试创建HttpServletResponse
,以便我可以编写输出流和标题(不使用MockHttpServletResponse
)?在断言块中,我希望将OutputStream
和标题与标准httpServletResponse
进行比较。
我使用了Spring4
、java8
和EasyMock
库。
MockHttpServletResponse
类。MockHttpServletRequest request = new MockHttpServletRequest();
MockHttpServletResponse response = new MockHttpServletResponse();
HttpServletRequest mockRequest = EasyMock.createMock(HttpServletRequest.class);
HttpServletResponse mockResponse = EasyMock.createMock(HttpServletResponse.class);
Using spring mock class
import org.springframework.mock.web.MockHttpServletResponse;
import org.springframework.mock.web.MockHttpServletRequest;
HttpServletRequest httpServletRequest = new MockHttpServletRequest();
HttpServletResponse httpServletResponse = new MockHttpServletResponse();
response.setHeader("Cache-Control", "max-age=123456789");
response.setHeader("Content-Type", "video/mp4");
response.setHeader("Content-Disposition", "inline");
response.setHeader("Accept-Ranges","bytes");
单元测试:
import static org.mockito.Mockito.mock
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
final HttpServletResponse response = mock(HttpServletResponse.class);
final HttpServletRequest request = mock(HttpServletRequest.class);
servlet.doGet();
verify(response).setHeader("Cache-Control", "max-age=123456789");
verify(response).setHeader("Content-Type", "video/mp4");
verify(response).setHeader("Content-Disposition", "inline");
verify(response).setHeader("Accept-Ranges","bytes");
verify(response).setHeader("Content-Length","421854");
verify(response, times(1)).setHeader("Accept-Ranges","bytes");
如果想要存根化OutputStream,您可以使用以下代码:
when(response.getOutputStream()).thenReturn(mock(ServletOutputStream.class));
此答案中还有更多有用的信息,请参见https://dev59.com/IWAf5IYBdhLWcg3weyzZ#24593642