为了账号安全,请及时绑定邮箱和手机立即绑定

模拟 MIMEMessage 的正确方法?

模拟 MIMEMessage 的正确方法?

阿晨1998 2021-12-22 15:56:00
我想实际验证消息中设置的字段,如正文、主题、发件人等......我也尝试过做一个参数捕获器,但它不起作用,当我调试代码时,消息总是显示为空获取 javaMailSender.send(message) 行时的字段。是否有模拟 MIMEMessage 的最佳实践?//EmailService.javaimport lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.mail.javamail.JavaMailSender;import org.springframework.mail.javamail.MimeMessageHelper;import javax.mail.MessagingException;import javax.mail.internet.MimeMessage;@Slf4jpublic class EmailService {    private JavaMailSender javaMailSender;    @Autowired    public EmailService(JavaMailSender javaMailSender) {        this.javaMailSender = javaMailSender;    }    public void sendEmail() {        MimeMessage message = javaMailSender.createMimeMessage();        String body = "<html>\n" +            "<p> This the body </p>\n" +            "<br>\n";        try {            MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(message, true);            mimeMessageHelper.setSubject("subject");            mimeMessageHelper.setTo("stack@overflow.com");            mimeMessageHelper.setFrom("overflow@stack.com");            mimeMessageHelper.setText(body, true);            javaMailSender.send(message);        } catch (MessagingException e) {            log.error("error");        }`enter code here`    }}
查看完整描述

1 回答

?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

使用集成测试进行这种测试通常更容易。电子邮件通常是使用诸如 freemarker 之类的模板库构建的,因此集成测试对于验证您的模板是否正确也很有价值。

您可以通过使用PowerMock创建一个 mock来进行单元测试MimeMessageHelper,但是 PowerMock 有时在跟上其他测试库的变化方面可能会很慢,而且这样的测试通常会变得脆弱且价值不大。例如,您可以验证setSubject()被调用mimeMessageHelper,但这是否会产生您真正想要测试的结果(主题设置为message)?


查看完整回答
反对 回复 2021-12-22
  • 1 回答
  • 0 关注
  • 192 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号