-
11/27 TIL | Mockito의 any(), eq()📝 기록/매일의 기록 2022. 11. 27. 18:54
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
📂 services > TransactionServiceTest.java@Test void list() { AccountNumber accountNumber = new AccountNumber("1234"); Transaction transaction = mock(Transaction.class); given(transactionRepository.findAllBySenderOrReceiver( accountNumber, accountNumber, any())) .willReturn(List.of(transaction)); List<Transaction> transactions = transactionService.list(accountNumber, 1); assertThat(transactions).hasSize(1); }
기존에 accountNumber, accountNumber, any() 였던 테스트가 갑자기 아래와 같은 에러 메시지를 반환하면서 테스트가 실패했다.
Invalid use of argument matchers!
3 matchers expected, 1 recorded: -> at kr.megaptera.makaobank.services.TransactionServiceTest.list(TransactionServiceTest.java:37)
This exception may occur if matchers are combined with raw values:
//incorrect:
someMethod(any(), "raw String");
When using matchers, all arguments have to be provided by matchers.
For example:
//correct:
someMethod(any(), eq("String by matcher"));
For more info see javadoc for Matchers class.
이유는 any()를 사용하게 되면 그 나머지 arguments가 raw values이면 안된다는 것이다. 에러 메시지에서 고쳐야 하는 방법을 친절히 알려줘서 eq()로 accountNumber를 감싸주니 해결이 되었다.@Test void list() { AccountNumber accountNumber = new AccountNumber("1234"); Transaction transaction = mock(Transaction.class); given(transactionRepository.findAllBySenderOrReceiver( eq(accountNumber), eq(accountNumber), any())) .willReturn(List.of(transaction)); List<Transaction> transactions = transactionService.list(accountNumber, 1); assertThat(transactions).hasSize(1); }
any()
모킹할 때 함수의 argument type으로 아무 type이나 주고 싶을 때가 있는데, 이때 any()를 사용하면 된다. 말 그대로 어떤 것이든 다 들어올 수 있다 하는 것이다.eq()
하지만, 특정 값을 사용하고 싶을 수가 있다. 그때 사용하면 되는 것이 바로 eq()이다.
'📝 기록 > 매일의 기록' 카테고리의 다른 글
1/3 TIL | 장기전을 견뎌내기 위해서 지켜야 할 세 가지. (1) 2023.01.03 12/30 TIL | 기(記)년회라는 걸 처음 해본 날. (0) 2022.12.30 11/25 TIL | MSW? 그게 뭔데.. 그거 어떻게 하는 건데.. (0) 2022.11.25 11/24 TIL | 매일 쓰는 어노테이션 @SpringBootTest, @ActiveProfiles, @Autowired (2) 2022.11.24 11/23 TIL | 테스트 고치기! (0) 2022.11.23