[java] Mockito를 사용하여 Mock 객체가 특정 메소드를 호출하지 않도록 하는 방법은?
아래 예제에서는 UserService
라는 클래스의 updateUser
메소드를 테스트하고 있습니다. 이 메소드 내에서 emailService
라는 Mock 객체의 sendEmail
메소드가 호출되는지 확인하지 않도록 하고 싶습니다.
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.Mockito;
public class UserServiceTest {
@Mock
private EmailService emailService;
@Test
public void testUpdateUser() {
UserService userService = new UserService(emailService);
User user = new User("john", "john@example.com");
// 특정 메소드가 호출되지 않는지 확인
Mockito.verify(emailService, Mockito.never()).sendEmail(Mockito.anyString(), Mockito.anyString());
userService.updateUser(user);
// 특정 메소드가 호출되지 않았는지 확인
Mockito.verify(emailService, Mockito.never()).sendEmail(Mockito.anyString(), Mockito.anyString());
}
}
위의 예제에서는 verify
메소드의 첫 번째 매개변수로 Mock 객체를 전달하고, 두 번째 매개변수로는 확인하고 싶은 메소드를 호출하고 있는지를 지정합니다. never
매처를 사용하여 해당 메소드가 호출되지 않도록 설정합니다.
위 예제에서는 updateUser
메소드가 실행되기 전과 후에 sendEmail
메소드가 호출되지 않는지 확인하고 있습니다.
Mockito는 Mock 객체의 메소드 호출을 감지하고 확인하는 기능을 제공하여 테스트 코드를 작성할 때 유용하게 사용할 수 있습니다.
더 자세한 내용은 Mockito의 공식 문서를 참조하시기 바랍니다. Mockito 공식 문서