[java] Mockito를 사용하여 Mock 객체의 특정 메소드를 호출하지 않도록 하는 방법은?

예를 들어, 다음과 같은 상황을 가정해 봅시다. UserService라는 클래스 내부에서 sendEmail() 메소드를 호출하는 로직이 있고, 이를 테스트하고자 하는 경우입니다. 이때, sendEmail() 메소드의 호출을 방지하고 싶다면 다음과 같이 하면 됩니다.

// Mock 객체 생성
UserService userServiceMock = Mockito.mock(UserService.class);

// 특정 메소드 호출을 방지
Mockito.verify(userServiceMock, Mockito.never()).sendEmail();

위의 코드에서 Mockito.mock() 메소드를 사용하여 UserService의 Mock 객체를 생성합니다. 그리고 Mockito.verify() 메소드를 사용하여 sendEmail() 메소드가 호출되지 않았음을 검증합니다. Mockito.never() 메소드는 메소드가 절대로 호출되지 않아야 함을 나타냅니다.

이렇게 하면 테스트 코드에서 sendEmail() 메소드 호출을 방지하여 원하는 동작을 검증할 수 있습니다.

추가적으로 Mockito.verify() 메소드와 Mockito.times() 메소드를 조합하여 메소드 호출 횟수를 검증하는 등 다양한 검증 기능을 사용할 수 있습니다. 자세한 내용은 Mockito 공식 문서를 참고하시기 바랍니다.