spring-mvc - 使用对象列表作为请求参数的 MockMvc 集成测试

标签 spring-mvc integration-testing spring-test mockmvc spring-test-mvc

我正在使用 Spring MVC 开发 REST 服务,该服务将对象列表作为请求参数。

    @RequestMapping(value="/test", method=RequestMethod.PUT)
    public String updateActiveStatus(ArrayList<Test> testList, BindingResult result) throws Exception {
        if(testList.isEmpty()) {
            throw new BadRequestException();
        }
        return null;
    }

当我尝试对上述服务进行集成测试时,我无法在请求参数中发送测试对象列表。

以下代码对我不起作用。

List<Test> testList = Arrays.asList(new Test(), new Test());
        mockMvc.perform(put(ApplicationConstants.UPDATE_ACTIVE_STATUS)
                .content(objectMapper.writeValueAsString(testList)))
            .andDo(print());

任何人都可以帮忙解决这个问题吗?

最佳答案

@RequestParam with List or array

@RequestMapping("/books")
public String books(@RequestParam List<String> authors,
                         Model model){
    model.addAttribute("authors", authors);
    return "books.jsp";
}

@Test
public void whenMultipleParameters_thenList() throws Exception {
    this.mockMvc.perform(get("/books")
            .param("authors", "martin")
            .param("authors", "tolkien")
    )
            .andExpect(status().isOk())
            .andExpect(model().attribute("authors", contains("martin","tolkien")));
}

关于spring-mvc - 使用对象列表作为请求参数的 MockMvc 集成测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56488012/

相关文章:

django - 我如何在 Django 中自动填充字段?

Spring 测试: Avoid to load configuration class on test

java - 部署 Spring MVC Web 应用程序

spring-mvc - 无法在测试类中 Autowiring bean

java - Spring Boot 即时重置数据源

spring-mvc - @ModelAttribute 注解是如何工作的?为什么我不能得到值(value)?

javascript - 如何在所有 jsamine 测试之前运行脚本?

asp.net-mvc - 如何使用 Watin 和 SpecFlow 编写与 HTML 标记不紧密耦合的测试?

java - Spring Aspect Advice @Test 方法

java - 带 spring-test 的 Spring Jar 版本