Prz*_*iec 4 java spring-mvc spring-boot mockmvc spring-boot-test
我正在尝试为集成测试(@SpringBootTest)创建模拟请求。
//given
MockHttpServletRequestBuilder requestBuilder = get("/users/register/user1");
Run Code Online (Sandbox Code Playgroud)
我想检查的是这个请求的遥控器。在我的控制器中,我从HttpServletRequest获取此信息
HttpServletRequest request;
request.getRemoteHost();
request.getRemoteAddr();
Run Code Online (Sandbox Code Playgroud)
不幸的是,现在getRemoteHost()总是会返回localhost。
我想在我的模拟请求中将其更改为其他内容,例如:
远程主机:
localhost-->mockhostdomain远程地址:
127.0.0.1-->10.32.120.7(任何不同)
我找不到合适的方法。甚至有可能吗?
我终于在这里找到了解决方案:
https://techotom.wordpress.com/2014/11/12/mocking-remoteaddr-with-spring-mvc/
基本上使用这种方法我们可以更改请求的每个参数。
所以首先我们必须定义我们的方法来改变我们想要的请求:
private static RequestPostProcessor remoteHost(final String remoteHost){
return request -> {
request.setRemoteAddr(remoteHost);
return request;
};
Run Code Online (Sandbox Code Playgroud)
而不是与方法with(...)上的MockHttpServletRequestBuilder对象,我们必须注射这种方法的结果。
MockHttpServletRequestBuilder requestBuilder = get("/user/prop").
.with(remoteHost("mockhostdomain.com"));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1984 次 |
| 最近记录: |