2014-10-10 69 views
3

我试图测试这个签名的方法:模拟控制器与对象参数

@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属性只接受字符串参数,有没有办法通过一个HashMap或实例类对象作为参数的RequestBody?

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

回答

3

您需要为此使用Jackson。这个想法是将你的对象(无论它是HashMap)反序列化成JSON字符串并将它传递给MockMvc。

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