Ayu*_*lik 14 spring integration-testing controller mocking spring-mvc
鉴于我已经继承了一些带有签名的Spring MVC控制器代码
@RequestMapping(value = "/upload", method = RequestMethod.POST)
public ModelAndView upload(HttpServletRequest request, HttpServletResponse response) {
String remoteAddress = request.getRemotedAddr();
auditService.logAddress(remoteAddress);
// do work...
return mav;
}
Run Code Online (Sandbox Code Playgroud)
我有一个执行测试的Spring MockMvc测试
public void someTest() {
mockMvc().perform(fileUpload("/upload").file(FileFactory.stringContent("myFile")));
// do work...
verify(auditService.logAddress("123456"));
}
Run Code Online (Sandbox Code Playgroud)
我需要在传递给我的上传控制器方法的HttpServletRequest对象上将远程地址设置为"12345",这样我就可以在测试中验证对模拟auditService的调用.
我可以创建一个MockHttpServletRequest对象并调用setRemoteAddr()方法,但是如何将这个模拟请求对象传递给mockMvc()方法调用?
M. *_*num 22
你可以添加一个RequestPostProcessor
.然后,您可以使用该with()
方法将其传递给mockmvc .
mockMvc().perform(
fileUpload("/upload")
.file(FileFactory.stringContent("myFile"))
.with(new RequestPostProcessor() {
public MockHttpServletRequest postProcessRequest(MockHttpServletRequest request) {
request.setRemoteAddr("12345");
return request;
}}));
Run Code Online (Sandbox Code Playgroud)
这样的事情应该有效.
归档时间: |
|
查看次数: |
7451 次 |
最近记录: |