【问题标题】:How do I test a functional interface that is passed to a mocked object [Mockito, Spring]如何测试传递给模拟对象的功能接口 [Mockito,Spring]
【发布时间】:2026-01-04 11:25:02
【问题描述】:

我有一个 MailService 类,我想对其进行单元测试。它调用JavaMailSender#send 方法,该方法接受MimeMessagePreparator 功能接口作为参数。然后JavaMailSender 类将调用MimeMessagePreparator#prepare

但是,因为 JavaMailSender 对象将在此单元测试中被模拟,所以在我的测试中不会调用 prepare 方法。当仅从模拟对象中调用其方法时,对MimeMessagePreparator 进行单元测试的正确方法是什么?

我知道我可以单独创建 MimeMessage 并将其作为参数传递给 send 方法,但如果这不是一个选项,有没有办法测试上述内容?

【问题讨论】:

    标签: java spring unit-testing junit mockito


    【解决方案1】:

    您是否考虑过使用spy 代替模拟?

    您可以监视 JavaMailSender 实例,然后验证是否已调用 MimeMessagePreparator#prepare。

    【讨论】:

    • 然后存根 JavaMailSender 中执行发送的方法?我会试试的。感谢您的建议。
    最近更新 更多