단위 테스트 도중 아래와 같은 예외 발생.
org.mockito.exceptions.misusing.InvalidUseOfMatchersException:
Invalid use of argument matchers!
2 matchers expected, 1 recorded:
핵심을 실제 값을 넣으면 안되고 matcher를 사용해서 넣어야한다.
@Test
public void findByStoreTest() {
//given
Store s = Store.builder()
.uuid(UUID.randomUUID())
.build();
Cake c = Cake.builder()
.uuid(UUID.randomUUID())
.store(s)
.build();
Customer customer1 = Customer.builder()
.uuid(UUID.randomUUID())
.build();
Demand d1 = Demand.builder()
.uuid(UUID.randomUUID())
.store(s)
.cake(c)
.status(DemandStatus.WAITING)
.customer(customer1)
.build();
List<Demand> li = new ArrayList<>();
li.add(d1);
//실제 값을 사용하면 안되고 Matchers를 사용해서 표현해야한다.! 주석으로 표시한 부분은 안되고 아래 any()를 사용한 부분은 잘 동작한다.
//given(demandRepository.findByCustomerAndStatus(any(), DemandStatus.WAITING)).willReturn(li);//any(DemandStatus.class)
given(demandRepository.findByCustomerAndStatus(any(), any(DemandStatus.class)).willReturn(li);
//when
List<Demand> byCustomer = demandService.findByCustomer(i -> i, customer1.getUuid(), DemandStatus.WAITING);
//then
assertEquals(byCustomer.size(), 1);
assertEquals(byCustomer.get(0), d1);
}
https://stackoverflow.com/questions/24468456/invalid-use-of-argument-matchers