본문 바로가기

코딩/예외 창고

[spring boot] org.mockito.exceptions.misusing.InvalidUseOfMatchersException: Invalid use of argument matchers!2 matchers expected, 1 recorded:

단위 테스트 도중 아래와 같은 예외 발생.

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

 

Invalid use of argument matchers

The simple test case below is failing with an exception. org.mockito.exceptions.misusing.InvalidUseOfMatchersException: Invalid use of argument matchers! 3 matchers expected, 2 recorded: I am not...

stackoverflow.com