为Junit测试构建简单的http-header

时间:2013-09-19 08:25:41

标签: java servlets junit mocking

我正在尝试测试HttpServletRequest,为此我使用了Mockito,如下所示:

HttpServletRequest  mockedRequest = Mockito.mock(HttpServletRequest.class);

现在在将http请求放入assert方法之前我只想在不启动真实服务器的情况下构建一个简单的http标头:

x-real-ip:127.0.0.1
host:example.com
x-forwarded-for:127.0.0.1
accept-language:en-US,en;q=0.8
cookie:JSESSIONID=<session_ID>

有人可以帮助我如何构建这样的测试头?感谢。

2 个答案:

答案 0 :(得分:9)

您可以将调用存根到request.getHeaders等,或者如果您可以添加依赖项,Spring-test可以使用MockHttpServletRequest(请参阅here

MockHttpServletRequest request = new MockHttpServletRequest();
request.addHeader("x-real-ip","127.0.0.1");

或者您可以构建自己的实现,允许您设置标题。

答案 1 :(得分:0)

以上答案使用MockHttpServletRequest。 如果要使用Mockito.mock(HttpServletRequest.class),则可以按以下方式对请求进行存根。

final HttpServletResponse response = mock(HttpServletResponse.class);
when(request.getHeader("host")).thenReturn("stackoverflow.com");
when(request.getHeader("x-real-ip")).thenReturn("127.0.0.1");