我只是尝试使用a测试Spring控制器方法MockHttpServletRequestBuilder.控制器方法的签名如下所示:
@RequestMapping(value = "/assignTeamsToUsers", method = RequestMethod.POST)
public @ResponseBody String assignUsersToTeams(Model model, @RequestBody MultiValueMap<String, String> ids).
Run Code Online (Sandbox Code Playgroud)
在我的测试案例中,我有:
MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(applicationContext).build();
MockHttpServletRequestBuilder request = createRequest(uri, method);
//set up request object...Not sure how??
//My current attempt:
String body = "userIds[]=0&teamIds[]=0";
request.content(body);
request.accept(MediaType.ALL);
request.contentType(MediaType.APPLICATION_FORM_URLENCODED);
ResultActions resultActions = mockMvc.perform(request);
Run Code Online (Sandbox Code Playgroud)
编辑:显示createRequest.method="POST"
private MockHttpServletRequestBuilder createRequest (String uri, String method) {
MockHttpServletRequestBuilder builder = null;
if("GET".equalsIgnoreCase(method))
builder = MockMvcRequestBuilders.get(uri);
else if("POST".equalsIgnoreCase(method))
builder = MockMvcRequestBuilders.post(uri);
else
Assert.fail("Unsupported method!");
//We always create requests for user Manager
builder.header("securityRole", Role.Manager.getDisplayName());
return builder;
}
Run Code Online (Sandbox Code Playgroud)
我知道uri和方法是正确的.我的问题是我从Spring 获得了415错误代码.基本上,我不知道如何设置request对象有适当@RequestBody的MultiValueMap.我已经尝试了很多设置request.content的变体,设置request.accept,request.contentType,request.characterEncoding,并且仍然每次我得到415错误.
如果有任何帮助,我可以使用Web界面成功发布到此端点,以下是chrome中的请求:
我最后通过执行以下操作解决了这个问题:
MockHttpServletRequestBuilder request = MockMvcRequestBuilders.post("whatever url");
request.contentType(MediaType.APPLICATION_FORM_URLENCODED);
//set key value pairs
//also the keys do not have to be unique, two keys of the same value will both get added
request.param("key", "value");
MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(applicationContext).build();
ResultActions resultActions = mockMvc.perform(request);
// make sure response is valid
Run Code Online (Sandbox Code Playgroud)
希望这可以引导其他人走向正确的方向.谢谢
| 归档时间: |
|
| 查看次数: |
13168 次 |
| 最近记录: |