首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将空数组参数传递给MockHttpServletRequestBuilder param方法

将空数组参数传递给MockHttpServletRequestBuilder param方法
EN

Stack Overflow用户
提问于 2016-03-16 18:53:43
回答 1查看 3.7K关注 0票数 2

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

这是我得到的错误主体:

代码语言:javascript
运行
复制
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)

还有其他方法来测试这种情况吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-10 15:05:37

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

我的控制器

代码语言:javascript
运行
复制
@RequestMapping(value = "/admin/config", method = RequestMethod.GET)
public List<TdConfig> getTdConfigs(@RequestParam(required = false) List<String> names) {
    return tdAdminService.getTdConfigs(names);
}

我的莫基托

代码语言:javascript
运行
复制
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());

打印请求:

代码语言:javascript
运行
复制
MockHttpServletRequest:
      HTTP Method = GET
      Request URI = /admin/config
       Parameters = {names=[]}
          Headers = {Accept=[application/json]}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36044561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档