[테스트] 커스텀 MimeMessageHelper 테스트하기
MimeMessage를 사용해서 실제로 메일을 보내보고, 메일이 깨지지는 않는지 확인해보고 싶어서 다음과 같은 테스트를 작성했습니다.
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("/testContext.xml")
public class SignupConfirmMimeMessageHelperTest {
@Autowired
JavaMailSender mailSender;
@Test
public void sendInteface() {
MimeMessage mimeMessage = mailSender.createMimeMessage();
Member member = new Member();
member.setEmail("whiteship2000@gmail.com");
assertNotNull(mimeMessage);
SignupConfirmMimeMessageHelper helper = new SignupConfirmMimeMessageHelper(mimeMessage);
helper.makeMessage(member);
mailSender.send(mimeMessage);
}
}
테스트를 만들면서 JavaMailSender와 MimeMessage, SignupConfirmMimeMessageHelper 클래스를 어떻게 사용할지 고민을 했죠. 생성자에 member도 같이 줘봤다가.. 뺏다가.. 했습니다. 결국은 빼냈습니다. 중요했던 건 SignupConfirmMimeMessageHelper 클래스의 생성 방법과 사용방법 이었습니다.
저런식으로 실제 메일을 보내 본 뒤.. 그대로 두면.. 테스트가 돌 때 마다 저한테 메일을 보내줄 겁니다. 상당히 귀찮은 테스트입니다. 그래서 생각을 했습니다. 안 되겠다. 어차피 메일 보내는 것도 확인했고.. 인코딩도 확인했고.. 내가 이 테스트에서 정하고자 했던 건 SignupConfirmMimeMessageHelper 클래스의 생성자 구조랑 사용법이니깐... 단위테스트로 고치자~
@RunWith(MockitoJUnitRunner.class)
public class SignupConfirmMimeMessageHelperTest {
@Mock JavaMailSender mockSender;
@Mock MimeMessage mockMessage;
@Test
public void sendInteface() {
assertNotNull(mockSender);
assertNotNull(mockMessage);
when(mockSender.createMimeMessage()).thenReturn(mockMessage);
MimeMessage mimeMessage = mockSender.createMimeMessage();
Member member = new Member();
member.setEmail("whiteship2000@gmail.com");
SignupConfirmMimeMessageHelper helper =
new SignupConfirmMimeMessageHelper(mimeMessage);
helper.makeMessage(member);
mockSender.send(mimeMessage);
}
}
그래서 이렇게 고쳤습니다. 고치고 나니까... 이런 생각이 드네요.
맨 마지막 줄만 지워버릴껄 그랬나.... 허허헐...