如何对具有对象的RequestParam的Controller方法进行单元测试?

时间:2019-03-22 19:50:22

标签: java spring mockmvc

我有一个控制器映射

@RequestMapping(value = "/something", method = RequestMethod.GET)
public String get(@RequestParam("id") Person aPerson, Model aModel) {

    aModel.addAttribute("person", aPerson);
    return "index";
}

如何通过MockMvc对此进行测试?

我可以做这样的事情

mockMvc.perform(get("/something?id=1")).andExpect(status().is2xxSuccessful());

但是,这将不起作用,因为RequestParam是一个对象,而不是String。转换是由Spring完成的,但是我正在对该方法进行单元测试,并且不想启动应用程序上下文。如何使用MockMvc进行单元测试?

1 个答案:

答案 0 :(得分:0)

您可以尝试类似的

    @Test
    public void test() throws Exception {
       Model model= new Model();
       mockMvc.perform(MockMvcRequestBuilders.get("/something?id=1")
         .content(asJsonString(model))
         .contentType(MediaType.APPLICATION_JSON)
         .accept(MediaType.APPLICATION_JSON)).andExpect(status().is2xxSuccessful());
    }