从 url 字符串创建一个模拟 HttpServletRequest?

2022-08-31 12:53:11

我有一个服务,它在HttpServletRequest对象上做了一些工作,特别是使用request.getParameterMap和acquest.getParameter来构造一个对象。

我想知道是否有一种直接的方法可以采用字符串的形式提供网址,例如

String url = "http://www.example.com/?param1=value1&param";

并轻松地将其转换为HttpServletRequest对象,以便我可以用我的单元测试对其进行测试?或者至少只是为了让 request.getParameterMap 和 request.getParameter 正常工作?


答案 1

以下是如何使用MockHttpServletRequest:

// given
MockHttpServletRequest request = new MockHttpServletRequest();
request.setServerName("www.example.com");
request.setRequestURI("/foo");
request.setQueryString("param1=value1&param");

// when
String url = request.getRequestURL() + '?' + request.getQueryString(); // assuming there is always queryString.

// then
assertThat(url, is("http://www.example.com:80/foo?param1=value1&param"));

答案 2

Spring在其spring-test模块中有MockHttpServletRequest

如果您使用的是 maven,则可能需要将适当的依赖项添加到 pom.xml。您可以在 mvnrepository.com 找到弹簧测试。


推荐