У меня есть этот restcontroller, который возвращает выгружаемые элементы с:
@GetMapping("/api/items")
public Page<Item> getPagedItems(Pageable pageable, @RequestParam(defaultValue="") String searchBy,
@RequestParam(defaultValue="") String searchValue) {
Page<Item> pageItem;
switch (searchBy) {
case "name" :
pageItem = itemRepository.findByNameStartingWith(searchValue, pageable);
break;
case "description" :
pageItem = itemRepository.findByDescriptionStartingWith(searchValue, pageable);
break;
default:
pageItem = itemRepository.findAll(pageable);
break;
}
return pageItem;
}
Пока мой MvcTest выглядит так:
@Test
public void testGetItems() throws Exception{
Page<Item> itemPage = itemRepository.findAll(PageRequest.of(0, 20));
given(itemRepository.findAll(PageRequest.of(0, 20))).willReturn(itemPage)
this.mvc.perform(get("/api/items")
.contentType(MediaType.APPLICATION_JSON))
.andDo(print())
.andExpect(status().isOk())
.andExpect(jsonPath("$",hasSize(1)));
}
Мне нужно содержимое этого запроса / api / items. Это возвращается
Что я могу сделать, чтобы этот тест заработал? В чем вроде проблемы?
Если это поможет, я также использую Spring Security. Я аннотировал тестовый класс с помощью @WithMockUser (roles = "ADMIN").
Когда вы возвращаете
@GetMapping("/api/items")
public Page<Item> getPagedItems(Pageable pageable, @RequestParam(defaultValue="") String searchBy,
@RequestParam(defaultValue="") String searchValue) {
Page<Item> pageItem;
switch (searchBy) {
case "name" :
pageItem = itemRepository.findByNameStartingWith(searchValue, pageable);
break;
case "description" :
pageItem = itemRepository.findByDescriptionStartingWith(searchValue, pageable);
break;
default:
pageItem = itemRepository.findAll(pageable);
break;
}
return pageItem;
}
в качестве ответа, ответ JSON будет примерно таким: