我正在尝试在spring框架中测试POST
方法,但我一直都会遇到错误。
我首先尝试了这个测试:
this.mockMvc.perform(post("/rest/tests").
param("id", "10").
param("width","25")
)
.andDo(MockMvcResultHandlers.print())
.andExpect(status().isOk());
并收到以下错误:
org.springframework.http.converter.HttpMessageNotReadableException
然后我尝试修改测试如下:
this.mockMvc.perform(post("/rest/tests/").
content("{\"id\":10,\"width\":1000}"))
.andDo(MockMvcResultHandlers.print())
.andExpect(status().isOk());
但得到以下错误:
org.springframework.web.HttpMediaTypeNotSupportedException
我的控制器是:
@Controller
@RequestMapping("/rest/tests")
public class TestController {
@Autowired
private ITestService testService;
@RequestMapping(value="", method=RequestMethod.POST)
@ResponseStatus(value = HttpStatus.OK)
public void add(@RequestBody Test test)
{
testService.save(test);
}
}
Test
类有两个字段成员:id
和width
。简而言之,我无法为控制器设置参数。
设置参数的正确方法是什么?
答案 0 :(得分:5)
您应该在帖子请求中添加内容类型MediaType.APPLICATION_JSON
,例如
this.mockMvc.perform(post("/rest/tests/")
.contentType(MediaType.APPLICATION_JSON)
.content("{\"id\":10,\"width\":1000}"))
.andDo(MockMvcResultHandlers.print())
.andExpect(status().isOk());