如何在不实际发送电子邮件的情况下模拟javax.mail.Transport.send()方法?

时间:2017-01-13 20:37:57

标签: java email mocking

发送电子邮件的代码:

    Properties properties = new Properties();
    properties.setProperty("mail.smtp.host", host);
    Session session = Session.getInstance(properties);
    MimeMessage message = new MimeMessage(session);
    message.setFrom(new InternetAddress(from));

    message.setRecipient(RecipientType.TO, new InternetAddress(to));
    message.setSubject(subject);
    message.setText(content);
    session.setDebug(true);

    Transport.send(message);

我想测试一下我是否以模拟方式正确发送电子邮件。 请帮忙!

1 个答案:

答案 0 :(得分:0)

以下是使用JMockit进行的示例测试:

@Test
public void checkEmailIsSent(@Mocked Transport emailTransport) {
    // Call the code under test which sends email.

    new Verifications() {{
        Message msg;
        Transport.send(msg = withCapture());
        // perform regular asserts on the captured msg
    }};
}