如何模拟javax.mail.Transport.send()方法而不实际发送电子邮件?

如何模拟javax.mail.Transport.send()方法而不实际发送电子邮件?,java,email,mocking,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 InternetAd

发送电子邮件的代码:

    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);
我想测试我是否以模拟方式正确发送电子邮件。
请帮忙

下面是一个使用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
    }};
}

下面是一个使用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
    }};
}
要知道你是否做对了,唯一的办法就是实际做。在测试时发送给自己,而不是预期的收件人。通过这种方式,您还可以检查邮件客户端是否可以正确查看电子邮件内容。要知道您的操作是否正确,唯一的方法就是实际操作。在测试时发送给自己,而不是预期的收件人。这样,您还可以检查邮件客户端是否可以正确查看电子邮件内容。