У меня есть служба рассылки, которая отправляет почту:
@Component
public class MailingServiceImpl implements MailingService{
@Autowired
JavaMailSenderImpl mailSender;
@Override
public void sendMail(String sender, String receiver, String subject, String content) {
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(sender);
message.setTo(receiver);
message.setSubject(subject);
message.setText(content);
mailSender.send(message);
}
}
, и я пишу тест для этого void sendMail(...)
, и мне нужно проверить, было ли письмо успешно отправлено.Я нашел GreenMail
, который я сейчас пытаюсь использовать для своего теста, вот код:
public class MailingServiceImplTest {
private MailingServiceImpl mailingServiceImpl;
@Autowired
private JavaMailSenderImpl mailSender;
@PostConstruct
public void testConnection() {
try {
mailSender.testConnection();
} catch(MessagingException ex) {
throw new IllegalStateException("[Warning] Mail server is not available. " + ex);
}
}
@Rule
public final GreenMailRule greenMail = new GreenMailRule(ServerSetupTest.SMTP);
@Test
public void testSendMail() throws IOException {
GreenMailUtil.sendTextEmailTest(receiver, sender, subject, content);
// GreenMailUtil.sendTextEmailTest(to, from, subject, body); -- here I could use the GreenMailUtil sendTextEmailTest, but I need to use my void sendMail function
MimeMessage[] emails = greenMail.getReceivedMessages();
// assertEquals(1, emails.length);
}
Есть идеи, как проверить мой метод?GreenMail
(например, пример раздел «Использование JUint (настройка на основе правил)») - не единственный инструмент, который я пробовал, пробовал Dumbster
(как пример ниже, но sendMessage
требуются строки в качестве параметров, я не могу передать свой метод. Я делаю что-то не так?недавно обнаружил в отладке, что @Autowired MailingServiceImpl
это null
.. но почему? Я не очень понимаю.