发送异步邮件的单元测试
本文关键字:单元测试 异步 | 更新日期: 2023-09-27 18:34:38
今天我正在尝试在Visual Studio中创建一个单元测试来发送电子邮件,我正在努力寻找最佳方法并将其使用SendCompleted
事件作为实际发送的消息的验证。
我申请代码发送电子邮件,但在使用许多不同的方式后,我只是在这里粘贴干净的代码,也许您可以告诉我我做错了什么或给我更好的解决方法。
这是我到目前为止尝试过的代码:
[TestClass]
public class sendEmailTest
{
[TestMethod]
public void sendAsyncEmailTest()
{
string from = "sender@test.com";
string to = "receiver@test.com";
MailMessage mail = new MailMessage(from, to);
mail.Subject = "Unit Test MVC";
mail.Body = "Unit Test for sending mail in MVC app";
mail.IsBodyHtml = true;
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.test.com";
smtp.EnableSsl = true;
NetworkCredential networkCredential = new NetworkCredential(from, "testpassword");
smtp.UseDefaultCredentials = true;
smtp.Credentials = networkCredential;
smtp.Port = 587;
smtp.SendAsync(mail, null);
smtp.SendCompleted += new SendCompletedEventHandler(smtp_SendCompleted);
}
static void smtp_SendCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
{
}
}
您可能需要的是虚拟的开发SMTP服务器。
你可以从这里得到它
在开发计算机上运行后,您可以发送电子邮件设置 smtp。托管到"本地主机"并使用虚拟电子邮件地址。
但是,正如评论中提到的,这种单元测试根本没有用,因为电子邮件是否成功发送取决于许多外部因素,例如网络连接。如果您过去在本地计算机上进行测试,这并不意味着每次在生产服务器上发送电子邮件都会成功。