Spring 将空数组参数传递给MockHttpServletRequestBuilder参数方法

Spring 将空数组参数传递给MockHttpServletRequestBuilder参数方法,spring,http,spring-mvc,http-request,Spring,Http,Spring Mvc,Http Request,我正在使用MockHttpServletRequestBuilder创建测试框架的请求。我的一个请求参数是字符串数组。对于我的测试,我想通过在请求中传递一个空数组来进行测试。但是,MockHttpServletRequestBuilder.addToMultiValueMap中的断言不允许我传递null或空值 这是我得到的错误主体: java.lang.IllegalArgumentException: 'values' must not be empty at org.springframew

我正在使用MockHttpServletRequestBuilder创建测试框架的请求。我的一个请求参数是字符串数组。对于我的测试,我想通过在请求中传递一个空数组来进行测试。但是,MockHttpServletRequestBuilder.addToMultiValueMap中的断言不允许我传递null或空值

这是我得到的错误主体:

java.lang.IllegalArgumentException: 'values' must not be empty
at org.springframework.util.Assert.notEmpty(Assert.java:214)
at org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder.addToMultiValueMap(MockHttpServletRequestBuilder.java:698)
at org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder.param(MockHttpServletRequestBuilder.java:153)
at MyMockApiRequests.queryPath(MockJdbcApiRequests.java:105)

有没有其他方法来测试这种情况

我认为将值设置为空字符串是可行的

我的控制器

@RequestMapping(value = "/admin/config", method = RequestMethod.GET)
public List<TdConfig> getTdConfigs(@RequestParam(required = false) List<String> names) {
    return tdAdminService.getTdConfigs(names);
}

您可能只需要避免传递参数,如果数组为空,则查询字符串中不应存在具有该名称的参数。
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
    params.add("names", "");
    MockHttpServletRequestBuilder request = get("/admin/config")
            .params(params)
            .accept(MediaType.APPLICATION_JSON);

    mockMvc.perform(request)
            .andExpect(MockMvcResultMatchers.status().isOk())
            .andDo(print());
MockHttpServletRequest:
      HTTP Method = GET
      Request URI = /admin/config
       Parameters = {names=[]}
          Headers = {Accept=[application/json]}