以对象列表作为请求参数的 MockMvc 集成测试
MockMvc Integration Test with List of Object as Request Param
我正在使用 Spring MVC 开发 REST 服务,它将对象列表作为请求参数。
@RequestMapping(value="/test", method=RequestMethod.PUT)
public String updateActiveStatus(ArrayList<Test> testList, BindingResult result) throws Exception {
if(testList.isEmpty()) {
throw new BadRequestException();
}
return null;
}
当我尝试对上述服务进行集成测试时,我无法在请求参数中发送测试对象列表。
以下代码对我不起作用。
List<Test> testList = Arrays.asList(new Test(), new Test());
mockMvc.perform(put(ApplicationConstants.UPDATE_ACTIVE_STATUS)
.content(objectMapper.writeValueAsString(testList)))
.andDo(print());
谁能帮忙解决这个问题!
使用 Gson 库将 list 转换为 json 字符串,然后将该字符串放入 content
同样把@RequestBody注解和方法参数放在controller里
public String updateActiveStatus(@RequestBody ArrayList<...
@RequestParam with List or array
@RequestMapping("/books")
public String books(@RequestParam List<String> authors,
Model model){
model.addAttribute("authors", authors);
return "books.jsp";
}
@Test
public void whenMultipleParameters_thenList() throws Exception {
this.mockMvc.perform(get("/books")
.param("authors", "martin")
.param("authors", "tolkien")
)
.andExpect(status().isOk())
.andExpect(model().attribute("authors", contains("martin","tolkien")));
}
我正在使用 Spring MVC 开发 REST 服务,它将对象列表作为请求参数。
@RequestMapping(value="/test", method=RequestMethod.PUT)
public String updateActiveStatus(ArrayList<Test> testList, BindingResult result) throws Exception {
if(testList.isEmpty()) {
throw new BadRequestException();
}
return null;
}
当我尝试对上述服务进行集成测试时,我无法在请求参数中发送测试对象列表。
以下代码对我不起作用。
List<Test> testList = Arrays.asList(new Test(), new Test());
mockMvc.perform(put(ApplicationConstants.UPDATE_ACTIVE_STATUS)
.content(objectMapper.writeValueAsString(testList)))
.andDo(print());
谁能帮忙解决这个问题!
使用 Gson 库将 list 转换为 json 字符串,然后将该字符串放入 content
同样把@RequestBody注解和方法参数放在controller里
public String updateActiveStatus(@RequestBody ArrayList<...
@RequestParam with List or array
@RequestMapping("/books")
public String books(@RequestParam List<String> authors,
Model model){
model.addAttribute("authors", authors);
return "books.jsp";
}
@Test
public void whenMultipleParameters_thenList() throws Exception {
this.mockMvc.perform(get("/books")
.param("authors", "martin")
.param("authors", "tolkien")
)
.andExpect(status().isOk())
.andExpect(model().attribute("authors", contains("martin","tolkien")));
}