1
我只是試圖使用MockHttpServletRequestBuilder
測試Spring控制器方法。控制方法的簽名如下:正確設置MockHttpServletRequestBuilder的RequestBody
@RequestMapping(value = "/assignTeamsToUsers", method = RequestMethod.POST)
public @ResponseBody String assignUsersToTeams(Model model, @RequestBody MultiValueMap<String, String> ids).
在我的測試情況下,我有:
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);
編輯:顯示的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;
}
我知道uri和方法是正確的。我的問題是我收到了來自Spring的錯誤代碼。基本上,我不知道如何設置request
對象以使MultiValueMap
具有合適的@RequestBody
。我嘗試了很多設置request.content的變體,設置request.accept,request.contentType,request.characterEncoding,並且仍然每次遇到415錯誤。
如果是任何幫助,我可以成功發佈到這個端點使用Web界面,這裏是請求的樣子鉻:
你在哪裏使用'request'? –
在我的測試案例中......我不確定我是否理解你的問題。儘管我更新了我的問題以顯示更多的測試代碼。 – jlars62
好的,所以我想看看'createRequest'的作用是什麼?什麼是'方法'? –