模拟控制器与对象参数

时间:2014-10-10 12:57:02

标签: spring spring-mvc junit controller mockmvc

我正在尝试使用此签名测试方法:

@RequestMapping(value="/Employee/{id}", method=RequestMethod.PUT, consumes="application/json") 
@Transactional
public @ResponseBody Map update(@PathVariable Integer id, 
    @RequestBody HashMap<String, Object> information) {

}

问题是MockMvc param属性只接受String参数,有没有办法将HashMap或实例类对象作为参数传递给RequestBody?

当我尝试将HashMap作为字符串传递时,我收到MismatchException。

1 个答案:

答案 0 :(得分:3)

你需要使用杰克逊。我们的想法是将您的对象(与它的HashMap无关)反序列化为JSON字符串并将其传递给MockMvc。

Here is tutorial how to do that。只需在那里搜索TestClass并查看它是如何使用的。跳过GET请求的单元测试。