verify
책으로 공부할 때는 무심코 넘겼던 주제 중에서 verify
라는 메서드가 있었다.
원하는 메서드가 몇 번 수행했는지를 추적할 수 있는 메서드이다. 지금 프로젝트가 초기단계인데 벌써 쓸 일이 두 번이나 생겼으니 이에 대해서 기록해볼려고 한다.
사용법
- Mockito.verifyNoMoreInteractions: 더 이상 메서드 호출이 없음을 검증합니다.
- Mockito.verifyZeroInteractions: 메서드 호출이 없었음을 검증합니다.
- Mockito.verifyInOrder: 메서드 호출 순서를 검증합니다.
- Mockito.verify(mock, Mockito.atLeast(n)).method(arg1, arg2) : method 메서드가 최소 n 번 호출되었는지 검증합니다.
예시
일단 해당 메서드는 Mockito의 static Method로
public static <T> T verify(T mock) {
return MOCKITO_CORE.verify(mock, times(1));
}
이렇게 정의가 되어 있다.
즉, 인자로 mocking한 class를 넘겨줘야 하는 것이다.
private LolSearchAdapter mockLolSearch = mock(LolSearchAdapter.class);
위와 같이 mock 객체를 생성하고
@Test
@DisplayName("이미 저장된 게임이 있을 때 lolSearchAdapter를 통해서 검색하지 않는다")
void searchAlreadySavedGame() {
// given
MatchRecord vo = MatchDummy.create();
MatchGame game = matchGameService.save(vo);
boardService = new BoardService(matchGameService, matchUserService, mockLolSearch);
List<ParticipantRecord> participantVO = vo.info().participants();
matchUserService.saveAll(participantVO, game);
// when
boardService.searchMatch(game.getGameId());
// then
verify(mockLolSearch, never()).searchMatch(anyString());
}
다음과 같이 verify 키워드를 통해서 BoardService에 DI된 mocking된 객체가 호출되었는지를 확인할 수 있다.