Интеграционный тест MockMvc со списком объектов в качестве параметра запроса - PullRequest
0 голосов
/ 07 июня 2019

Я работаю над REST-сервисом, используя Spring MVC, который принимает List of Object в качестве параметра запроса.

    @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());

Может кто-нибудь, пожалуйста, помогите в этом!

Ответы [ 2 ]

1 голос
/ 07 июня 2019

Используйте библиотеку Gson для преобразования списка в строку json, а затем поместите эту строку в содержимое

Также поместите аннотацию @RequestBody с параметром метода в контроллере

public String updateActiveStatus(@RequestBody ArrayList<...

0 голосов
/ 07 июня 2019

@ RequestParam со списком или массивом

@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")));
}
...