2014-10-10 68 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請求的單元測試。