模拟服务器请求

时间:2016-09-28 09:23:29

标签: java spring servlets junit

我使用spring,在我的控制器方法中我期待查询参数

@RequestMapping(method = RequestMethod.GET)
    public MyClass myMethod(
            @ApiParam(defaultValue = "some string", value = "some text") @RequestParam("myParam") MyClass2 myParam) {
            //do something
        }

现在在JUnit测试中我想调用这个方法,为此我已经预先设置了一个请求,但是找不到setQueryString()的正确方法

MockHttpServletRequest request = new MockHttpServletRequest();
request.setRequestURI("/pathToMyMethod");
request.setQueryString(new MyClass2().toString());

构造一个新对象并在其上调用toString()不起作用。 (调用空构造函数创建具有随机值的对象)

失败追踪: org.springframework.web.bind.MissingServletRequestParameterException: Required MyClass2 parameter 'myParam' is not present.

如何正确创建此类请求?

1 个答案:

答案 0 :(得分:2)

使用MockMvc

 mockMvc.perform(get("/").param("myParam", "paramValue"))
     .andExpect(status().isOk());