我有一个MailService
类,我想对其进行单元测试。它调用JavaMailSender#send方法,该方法接受MimeMessagePreparator函数接口作为参数。然后,JavaMailSender
类将调用 MimeMessagePreparator#prepare。
但是,由于JavaMailSender
对象将在此单元测试中被模拟,因此不会在我的测试中调用prepare
方法。当MimeMessagePreparator
的方法仅从模拟对象中调用时,对进行单元测试的正确方法是什么?
我知道我可以单独创建MimeMessage
并将其作为参数传递给send
方法,但如果这不是一个选项,有没有办法测试上述内容?
你有没有考虑过用间谍而不是模拟?
您可以监视 JavaMailSender 实例,然后验证是否已调用 MimeMessagePreparator#prepare。