使用假smtp服务器生成MailSendException

时间:2013-02-07 15:55:56

标签: java spring unit-testing javamail

我需要测试一些使用Spring MailSender实例发送电子邮件批处理的组件。当提供的目标地址格式不正确时,“send”方法会抛出一个MailSendException,类似于myAddressgmail.com(请注意,我不是假装我的smtp服务器知道地址确实存在于目标主机中,只是谈论结构)。事实上,这是使用我真正的smtp服务器时会发生的事情。

为了模拟smtp服务器,我尝试了Dumbster和GreenMail,这里出现了问题。这些虚假的smtp服务器不检查地址是否格式正确,因此不会抛出MailSendException。我需要抛出此异常以测试异常处理。

2 个答案:

答案 0 :(得分:1)

使用MockitoEasyMock等模拟库。

然后你可以做类似的事情:

MailSender mockSender = mock(MailSender.class);
YourSMTPServer server = new YourSMTPServer(mockSender);

when(mockSender.send(...)).thenThrow(new MailSendException(...));

// then invoke the method on your server that calls MailSender.send() and
// assert it does what you want it to do when an exception is encountered

答案 1 :(得分:0)

您可以使用mailnest.io进行电子邮件测试。在平台中,有一个错误模式,您可以打开该模式以模拟来自服务器的错误响应。