如何测试JavaMailSender?

2024-02-01

我的问题不大。我创建了 MailService 来发送邮件。当我运行程序时,它有效。我拥有的所有可通过电子邮件发送的属性resources/application.properties。我在用着spring-boot-starter-mail.

@Service
public class MailService {
    private JavaMailSender javaMailSender;

    @Autowired
    public MailService(JavaMailSender javaMailSender) {
        this.javaMailSender = javaMailSender;
    }

    public void sendMail(String subject, String messageContent, String recipient)
            throws MessagingException {
        MimeMessage mimeMessage = javaMailSender.createMimeMessage();
        MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage);
        messageHelper.setTo(recipient);
        messageHelper.setSubject(subject);
        messageHelper.setText(messageContent);
        javaMailSender.send(mimeMessage);
    }
}

但我不知道如何为其创建测试。我尝试过类似的东西,我在哪里使用org.jvnet.mock-javamail:mock-javamail,但它不起作用:

public class MailServiceTest {
    private MailService mailService;

    @Mock
    private JavaMailSender javaMailSender;


    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        mailService = new MailService(javaMailSender);
        Mailbox.clearAll();
    }

    @Test
    public void sendMailTest() throws MessagingException, IOException {
        String subject = "Some subject";
        String body = "Some contents.";
        String recipient = "[email protected] /cdn-cgi/l/email-protection";

        mailService.sendMail(subject, body, recipient);
        List<Message> inbox = Mailbox.get(recipient);
        assertTrue(inbox.size() == 1);
        assertEquals(subject, inbox.get(0).getSubject());
        assertEquals(body, inbox.get(0).getContent());
    }
}

你可以测试一下如何MimeMessage成立于:

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 = "[email protected] /cdn-cgi/l/email-protection"
        EmailRequest request = new EmailRequest();
        request.setRecipient(recipient);
        emailServiceImpl.send(request);
        assertEquals(recipient, mimeMessage.getRecipients(RecipientType.TO)[0].toString());
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何测试JavaMailSender? 的相关文章

  • 如何使用 Java 和 Selenium WebDriver 在 C 目录中创建文件夹并需要将屏幕截图保存在该目录中?

    目前正在与硒网络驱动程序和代码Java 我有一种情况 我需要在 C 目录中创建一个文件夹 并在该文件夹中创建我通过 selenium Web 驱动程序代码拍摄的屏幕截图 它需要存储在带有时间戳的文件夹中 如果我每天按计划运行脚本 所有屏幕截
  • Spring Batch 多线程 - 如何使每个线程读取唯一的记录?

    这个问题在很多论坛上都被问过很多次了 但我没有看到适合我的答案 我正在尝试在我的 Spring Batch 实现中实现多线程步骤 有一个包含 100k 条记录的临时表 想要在 10 个线程中处理它 每个线程的提交间隔为 300 因此在任何时
  • 如何默认将 Maven 插件附加到阶段?

    我有一个 Maven 插件应该在编译阶段运行 所以在项目中consumes我的插件 我必须做这样的事情
  • Java EE:如何获取我的应用程序的 URL?

    在 Java EE 中 如何动态检索应用程序的完整 URL 例如 如果 URL 是 localhost 8080 myapplication 我想要一个可以简单地将其作为字符串或其他形式返回给我的方法 我正在运行 GlassFish 作为应
  • Play框架运行应用程序问题

    每当我尝试运行使用以下命令创建的新 Web 应用程序时 我都会收到以下错误Play http www playframework org Error occurred during initialization of VM Could no
  • 列出jshell中所有活动的方法

    是否有任何命令可以打印当前 jshell 会话中所有新创建的方法 类似的东西 list但仅适用于方法 您正在寻找命令 methods all 它会打印所有方法 包括启动 JShell 时添加的方法 以及失败 被覆盖或删除的方法 对于您声明的
  • 我可以使用 HSQLDB 进行 junit 测试克隆 mySQL 数据库吗

    我正在开发一个 spring webflow 项目 我想我可以使用 HSQLDB 而不是 mysql 进行 junit 测试吗 如何将我的 mysql 数据库克隆到 HSQLDB 如果您使用 spring 3 1 或更高版本 您可以使用 s
  • 如何在PreferenceActivity中添加工具栏

    我已经使用首选项创建了应用程序设置 但我注意到 我的 PreferenceActivity 中没有工具栏 如何将工具栏添加到我的 PreferenceActivity 中 My code 我的 pref xml
  • 禁止的软件包名称:java

    我尝试从数据库名称为 jaane 用户名 Hello 和密码 hello 获取数据 错误 java lang SecurityException Prohibited package name java at java lang Class
  • Java按日期升序对列表对象进行排序[重复]

    这个问题在这里已经有答案了 我想按一个参数对对象列表进行排序 其日期格式为 YYYY MM DD HH mm 按升序排列 我找不到正确的解决方案 在 python 中使用 lambda 很容易对其进行排序 但在 Java 中我遇到了问题 f
  • Java TestNG 与跨多个测试的数据驱动测试

    我正在电子商务平台中测试一系列商店 每个商店都有一系列属性 我正在考虑对其进行自动化测试 是否有可能有一个数据提供者在整个测试套件中提供数据 而不仅仅是 TestNG 中的测试 我尝试不使用 testNG xml 文件作为机制 因为这些属性
  • JRE 系统库 [WebSphere v6.1 JRE](未绑定)

    将项目导入 Eclipse 后 我的构建路径中出现以下错误 JRE System Library WebSphere v6 1 JRE unbound 谁知道怎么修它 右键单击项目 特性 gt Java 构建路径 gt 图书馆 gt JRE
  • 仅将 char[] 的一部分复制到 String 中

    我有一个数组 char ch 我的问题如下 如何将 ch 2 到 ch 7 的值合并到字符串中 我想在不循环 char 数组的情况下实现这一点 有什么建议么 感谢您花时间回答我的问题 Use new String value offset
  • Java执行器服务线程池[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如果我使用 Executor 框架在
  • Android 中麦克风的后台访问

    是否可以通过 Android 手机上的后台应用程序 服务 持续监控麦克风 我想做的一些想法 不断聆听背景中的声音信号 收到 有趣的 音频信号后 执行一些网络操作 如果前台应用程序需要的话 后台应用程序必须能够智能地放弃对麦克风的访问 除非可
  • 如何从指定日期获取上周五的日期? [复制]

    这个问题在这里已经有答案了 如何找出上一个 上一个 星期五 或指定日期的任何其他日期的日期 public getDateOnDay Date date String dayName 我不会给出答案 先自己尝试一下 但是 也许这些提示可以帮助
  • 如何从泛型类调用静态方法?

    我有一个包含静态创建方法的类 public class TestClass public static
  • 如何在桌面浏览器上使用 webdriver 移动网络

    我正在使用 selenium webdriver 进行 AUT 被测应用程序 的功能测试自动化 AUT 是响应式网络 我几乎完成了桌面浏览器的不同测试用例 现在 相同的测试用例也适用于移动浏览器 因为可以从移动浏览器访问 AUT 由于它是响
  • Firebase 添加新节点

    如何将这些节点放入用户节点中 并创建另一个节点来存储帖子 我的数据库参考 databaseReference child user getUid setValue userInformations 您需要使用以下代码 databaseRef
  • 发送用户注册密码,django-allauth

    我在 django 应用程序上使用 django alluth 进行身份验证 注册 我需要创建一个自定义注册表单 其中只有一个字段 电子邮件 密码将在服务器上生成 这是我创建的表格 from django import forms from

随机推荐

  • Google App Engine:通过 Python 使用自定义入口点

    我开始学习 Google App Engine 并使用 Flask 应用程序编写了一个基本的 main py 文件 该文件运行良好 这是前几行代码 from flask import Flask jsonify app Flask name
  • 与 Jackson 2.9.2 兼容的 Jersey 版本有哪些

    您能帮我解决这两个疑问 问题吗 任何使用过 Jackson 2 9 2 的人都可以告诉我 Jackson 2 9 2 的兼容 Jersey 版本是什么 我目前使用 Jersey 2 23 2 但它不适用于 Jackson 2 9 2 我收到
  • 使用 Kusto 获取每组的前 1 行

    我有一个表 我想使用 Kusto 查询语言获取每个组的最新条目 这是表格 文档状态日志 ID DocumentID Status DateCreated 2 1 S1 7 29 2011 3 1 S2 7 30 2011 6 1 S1 8
  • 发送电子邮件意向

    Intent intent new Intent Intent ACTION SEND intent setType text html intent putExtra Intent EXTRA EMAIL email protected
  • $lookup 具有相同的集合

    我是 MongoDB 新手 所以我不确定我的问题表述是否正确 我有一个集合 其中的数据如下所示 id ObjectId 66666 Id 994 PostType 1 AnswerId 334 CreationDate ISODate 19
  • 退出钛合金中的应用程序(iOS)

    iOS 相当于 win close var activity Titanium Android currentActivity activity finish Thanks 没有 钛 此外 苹果明确不鼓励这样做 iOS 应用程序从不显示关闭
  • Django模板,如何制作一个选择预定义值的下拉框?

    我试图创建一个下拉列表框 其中所选值等于从模板值传递的值 但没有成功 谁能看一下并告诉我我做错了什么
  • 具有插入曲线和透明背景的 CSS 形状

    我需要创建一个像这张图片一样的 CSS 形状 请检查这个fiddle http jsfiddle net KB2nY 我的工作 我已经创造了类似的东西 但我无法给它一条曲线 shape border left 70px solid tran
  • 停止执行 PerformSelector:

    非常基本的问题 self performSelector selector startSequence withObject nil afterDelay 1 0 但是 有没有办法在调用后阻止它呢 谢谢你的帮助 迪斯科 你要 NSObjec
  • AttributeError:既没有与关联的“InstrumentedAttribute”对象也没有“Comparator”对象

    我有一个表定义为 class Results db Model tablename results event id db Column db Integer db ForeignKey Events id primary key True
  • Visual Studio 中的代码指标计算

    以下代码指标计算的首选分数范围是多少 可维护性指标 圈复杂度 传承深度 类耦合 理论上的最佳值为 可维护性指数 100 数值越高 可维护性越好 圈复杂度 1 代码可以采用的不同路径的数量 继承深度 1 继承树中该类定义之上的类定义数量 不包
  • 如何监听 Fennec 扩展的页面加载?

    我正在为 Fennec 开发一个简单的扩展 它必须向每个加载的页面添加特殊的 HTML 元素 我创建了这个简单的overlay js var MyAddon onLoad function aEvent var appcontent doc
  • 是否有命名实体框架迁移的最佳或推荐实践? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 使用实体框架代码优先迁移时 是否有为每个迁移选择名称的最佳实践 例如 每个名称可能包含版本号或对模型所做的更改或两者 Add Migration
  • Python:os.stat().st_size 给出的值与 du 不同

    我正在创建一个实用程序 它将遍历目录并获取所有目录的子目录和文件的大小并存储该值 但是 尺寸计算不正确 这是我的类 它自动递归所有子目录 class directory Class that automatically traverses
  • 如何链接到 django-cms 中未翻译页面的语言主页?

    在 django cms 中 我有两种语言 其中一页荷兰语目前尚未翻译成英语 查看此页面时 语言选择器不提供英文翻译的链接 因为没有 但是 我想将链接链接到英文翻译以链接到主页 或其他一些英文页面 如果有意义的话 现在我可以自己创建所需的模
  • SQL添加一个新列,其值只能在几个固定选项中

    我想在我的数据表中添加一个带有 SQL 的新列 如下所示 CREATE TABLE brands Brand varchar 255 Contact varchar 150 Address varchar 255 Location varc
  • ImageScience 在更新 Rails 3 时中断

    我有一个工作 并且工作良好 的 ImageScience 安装 它对图像的各种尺寸进行了一些简单的调整大小 然后将它们复制到不同的目录 一切都很简单 这个小而简单的例程是在 rake 任务中 更新到 Rails 3 后 这个 rake 任务
  • 表单重置按钮是否会触发选择元素的 onChange 事件?

    我有一个带有一些选择元素的表单onChange附加到它们的事件 我希望即使有人单击表单重置按钮也能触发该事件 我的问题是 重置表单是否会触发选择元素onChange event 这是 jQuery 中的一个简单示例
  • 为什么 Time.strptime() 返回当前日期?

    向私有 无公共文档 API 发出 GET 请求会返回 JSON 格式的数据 我感兴趣的值是日期 它返回 ASP NET JSON 日期格式的日期 它看起来是这样的 AanmeldDatum Date 1406675114000 0200 还
  • 如何测试JavaMailSender?

    我的问题不大 我创建了 MailService 来发送邮件 当我运行程序时 它有效 我拥有的所有可通过电子邮件发送的属性resources application properties 我在用着spring boot starter mai