🫠테스트 코드를 작성하여 테스트를 돌릴 경우 보통 @SpringBootTest
를 선언해준다. 이렇게 되면 스프링 컨테이너를 띄워서 테스트를 진행하게 되는데 테스트를 돌려보면 컨테이너를 띄우고 의존성 주입하고 하다보면 시간이 걸리게 된다. 이때 Mock
을 이용하면 해결 할 수 있는데 Mock
을 이용하게 되면 가짜 객체를 생성 할 수 있고 이를 통해 컨테이너를 띄위지 않고 테스트를 돌릴 수 있어 보다 더 빠르며 특정상황에 대하여 테스트를 할 수 있어 좋다.
Mock
객체를 생성하려면 아래와 같이 이용하면 된다.
@ExtendWith(MockitoExtension.class)
class MailServiceTest {
@Mock
private JavaMailSender javaMailSender;
@InjectMocks
private MailService mailService;
}
😎@Mock
을 통해 가짜 객체를 생성해주고 @InjectMocks
를 통해 가짜 객체를 주입해줄 수 있다.
@Test
void sendMail() {
// Given
String email = "test@example.com";
String subject = "Test Subject";
String content = "Test Content";
// When
mailService.sendMail(email, subject, content);
//then
verify(javaMailSender, times(1)).send(any(SimpleMailMessage.class));
}
위 코드는 mailservice
를 실행 한 경우 mock
객체인 JavaMailsender
가 1번 실행되었는지를 확인하는 코드이다.
🫡이를 통해 더 빠르고 특정상황에 대하여 테스트 할 수 있다.