首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何测试Spring的JavaMailSender

如何测试Spring的JavaMailSender
EN

Stack Overflow用户
提问于 2013-05-31 18:18:11
回答 4查看 19.7K关注 0票数 16

我有一个注入了JavaMailSender的服务。我的服务对其进行配置并发送一封邮件。我想截取原始邮件以确保信息是正确的。我想在JUnit中这样做。

你们会怎么做呢?

代码语言:javascript
运行
复制
@Service
public class MyServiceImpl {

    @Autowired
    private JavaMailSender _mailSender;

    public void sendMail(String to, String body, String subject){
        ...
        _mailSender.something
        ...
    }
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-05-31 18:23:29

我已经使用GreenMail做到了这一点。看一看my blog post about it,在那里您还可以找到一个可用的示例。

票数 24
EN

Stack Overflow用户

发布于 2013-05-31 19:12:27

您可以使用测试SMTP服务器,如Dumbster。如下例所示:

代码语言:javascript
运行
复制
@Test
    public void sendSimpleEmailWithCC() {
        // Runs a Dumbster simple SMTP server - default config
        SimpleSmtpServer server = SimpleSmtpServer.start();
        String from = "whoever@from.com";
        String to = "whoever@to.com";
        String messageText = "Good message";
        String title = "Test message";
        String cc = "whoever@cc.com";
        Assert.assertTrue(mailSender
                .sendEmail(from, to, cc, title, messageText));
        server.stop();
        Assert.assertTrue(server.getReceivedEmailSize() == 1);
        Iterator emailIter = server.getReceivedEmail();
        SmtpMessage email = (SmtpMessage) emailIter.next();
        Assert.assertTrue(email.getHeaderValue("From").equals(from));
        Assert.assertTrue(email.getHeaderValue("To").equals(to));
        Assert.assertTrue(email.getHeaderValue("Cc").equals(cc));
        Assert.assertTrue(email.getHeaderValue("Subject")
                .equals("Test message"));
        Assert.assertTrue(email.getBody().equals(messageText));
    }
票数 5
EN

Stack Overflow用户

发布于 2019-02-23 08:12:23

如果你的目标是只使用Junit/Mockito,并在发送之前测试MimeMessage是如何形成的,那么下面的配置应该足够了:

代码语言:javascript
运行
复制
public class EmailServiceTest {

    private EmailServiceImpl emailServiceImpl;

    private JavaMailSender javaMailSender;

    private MimeMessage mimeMessage;

    @Before
    public void before() {
        mimeMessage = new MimeMessage((Session)null);
        javaMailSender = mock(JavaMailSender.class);
        when(javaMailSender.createMimeMessage()).thenReturn(mimeMessage);
        emailServiceImpl = new EmailService(javaMailSender);
    }

    @Test
    public void emailTest() {
        String recipient = "example@example.com"
        EmailRequest request = new EmailRequest();
        request.setRecipient(recipient);
        emailServiceImpl.send(request);
        assertEquals(recipient, mimeMessage.getRecipients(RecipientType.TO)[0].toString());
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16854993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档