使用MultiValueMap作为参数测试端点

时间:2018-11-13 20:03:57

标签: java spring testing integration-testing rest-assured

我的端点为:

@RequestMapping(value = "/topics/{topicId}")
public class TopicGateway {
    @PostMapping
    public void generate(@RequestParam MultiValueMap params, HttpServletResponse response) {
        reportFacade.generate(params, response);
    }

我想为此方法创建集成测试。 我可以放心使用,但是使用默认的嘲讽MvcMvc的示例也可以帮上忙。

我现在所做的只是:

given()
    .pathParam("topicId", 1)
    // here I need to add those MultiValueMap.
    .get(BASE_PATH)
    .then()
    .statusCode(200);

private MultiValueMap<String, String> params(){
    MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
    params.add("param1", "Test");
    params.add("param2", "Another test");
    params.add("param3", "123");
    params.add("param4", "456");
    return params;
}

我尝试过:。formParameters(params()),但似乎没有用。

1 个答案:

答案 0 :(得分:0)

我假设您正在尝试测试POST方法。这是代码:

given()
   .post(BASE_PATH, params())
   .then()
   .statusCode(200);


private MultiValueMap<String, String> params(){
    MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
    params.add("param1", "Test");
    params.add("param2", "Another test");
    params.add("param3", "123");
    params.add("param4", "456");
    return params;
}

您必须将方法更改为post并将映射作为第二个参数传递