У меня есть BeerRepository
интерфейс, который расширяет JPARepository<Beer,UUID>
.Этот интерфейс содержит этот метод.
Page<Beer> findAllByBeerName(String beerName, Pageable pageable);
В методе обработчика контроллера у меня есть это.
Page<Beer> pagedResult = beerRepository.findAllByBeerName(beer.getBeerName(),
createPageRequest(0,10,Sort.Direction.DESC,"beerName"));
Я пытаюсь выполнить модульное тестирование метода обработчика контроллера.
Это метод @BeforeEach
.
. . .
Page<Beer> pagedResponse;
@BeforeEach
void setUp() {
beerList = new ArrayList<Beer>();
beerList.add(Beer.builder().build());
beerList.add(Beer.builder().build());
pagedResponse = new PageImpl(beerList);
mockMvc = MockMvcBuilders
.standaloneSetup(controller)
.build();
}
Мой метод @Test такой.
@Test
void processFindFormReturnMany() throws Exception{
when(beerRepository.findAllByBeerName(anyString(), PageRequest.of(0,
10,Sort.Direction.DESC,"beerName"))).thenReturn(pagedResponse);
mockMvc.perform(get("/beers"))
.andExpect(status().isOk())
.andExpect(view().name("beers/beerList"))
.andExpect(model().attribute("selections", hasSize(2)));
}
При выполнении теста я получаю
org.mockito.exceptions.misusing.InvalidUseOfMatchersException:
Invalid use of argument matchers!
2 matchers expected, 1 recorded:
-> at
guru.sfg.brewery.web.controllers.BeerControllerTest.
processFindFormReturnMany
(BeerControllerTest.java:67)
This exception may occur if matchers are combined with raw values:
//incorrect:
someMethod(anyObject(), "raw String");
When using matchers, all arguments have to be provided by matchers.
Любая помощь по этому вопросу будет высоко оценен.