k_b*_*k_b 5 spring-mvc junit4 mockmvc
我正在为控制器方法之一编写一个junit,其方法签名如下:
@RequestMapping(value="/getTokenizedURL.json",method=RequestMethod.POST)
@ResponseBody
public ResponseData getTokenizedURL(@RequestBody final RequestData requestData, final HttpServletRequest request) throws CustomException
Run Code Online (Sandbox Code Playgroud)
我需要使用 MockMvc 调用此方法,并且可以使用以下方式调用:
mockMvc.perform(post("/user/getTokenizedURL.json")
.contentType(MediaType.APPLICATION_JSON)
.content(json))
.andDo(print())
.andExpect(status().isOk());
Run Code Online (Sandbox Code Playgroud)
但问题是我无法HttpServletRequest在使用模拟 mvc 调用原始方法时设置参数。如果不设置HttpServletRequest参数,我的测试就会出现问题,因为它是原始方法中必需的和使用的。
请让我知道我应该如何设置相同的内容。谢谢!
这个想法是你不应该需要。
MockMvcRequestBuilders#post(..)返回 a MockHttpServletRequestBuilder,它允许您使用所需的任何值构造请求。这些将反映在HttpServletRequest传递给处理程序方法的 中。
例如,您使用了
.contentType(MediaType.APPLICATION_JSON)
Run Code Online (Sandbox Code Playgroud)
这将设置content-type请求的标头。在你的处理程序方法中,如果你这样做了
request.getHeader("content-type");
Run Code Online (Sandbox Code Playgroud)
你会得到一个对应String的MediaType.APPLICATION_JSON.
MockHttpServletRequestBuilder请求的每个部分都有“设置器” 。
| 归档时间: |
|
| 查看次数: |
3988 次 |
| 最近记录: |