我正在为一种具有方法签名的控制器方法编写一个junit,如下所示:
@RequestMapping(value="/getTokenizedURL.json",method=RequestMethod.POST)
@ResponseBody
public ResponseData getTokenizedURL(@RequestBody final RequestData requestData, final HttpServletRequest request) throws CustomException
我需要使用MockMvc调用此方法,并且可以使用以下方法调用:
mockMvc.perform(post("/user/getTokenizedURL.json")
.contentType(MediaType.APPLICATION_JSON)
.content(json))
.andDo(print())
.andExpect(status().isOk());
但是问题是我无法HttpServletRequest
使用模拟mvc调用原始方法时设置Parameter。没有设置HttpServletRequest
参数,我的测试就产生了问题,因为它是原始方法中必需的并与之一起使用。
请让我知道如何设置相同的内容。谢谢!
这个想法是您不需要。
MockMvcRequestBuilders#post(..)
返回一个MockHttpServletRequestBuilder
,可让您使用所需的任何值构造请求。这些将在HttpServletRequest
传递给您的处理程序方法的中进行镜像。
例如,您曾经
.contentType(MediaType.APPLICATION_JSON)
这将设置content-type
请求的标头。在处理程序方法中,如果您做了
request.getHeader("content-type");
您将获得对应String
的MediaType.APPLICATION_JSON
。
在MockHttpServletRequestBuilder
该请求的每一个部分都有“二传手”。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句