ASP.NET 系列:单元测试之SmtpClient
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ASP.NET 系列:单元测试之SmtpClient相关的知识,希望对你有一定的参考价值。
使用SmtpClient发送Email时,我们可以创建ISmtpClient接口和SmtpClientWrapper适配类,在单元测试中对ISmtpClient进行Mock或自定义FackeSmtpClient,但nDumbster的Facke SMTP Server给我们提供了更直观更简单的方式进行单元测试。可以通过Nuget搜索nDumbster,这里使用的是netDumbster。
1.IEmailSender接口
public interface IEmailSender { void SendMail(string from, string to, string subject, string body); }
2.SMTPAdapter实现类
public interfacepublic class SMTPAdapter : IEmailSender { public void SendMail(string from, string to, string subject, string body) { var message = new MailMessage(); message.IsBodyhtml = true; message.From = new MailAddress(from); message.To.Add(new MailAddress(to)); message.Subject = subject; message.Body = body; using (var smtpClient = new SmtpClient()) { if (smtpClient.Host == null) { smtpClient.Host = "localhost"; } smtpClient.Send(message); } } }
3.使用nDumbster单元测试
public class SMTPAdapterTest { [Fact] public void SendMailTest() { SimpleSmtpServer server = SimpleSmtpServer.Start(25); IEmailSender sender = new SMTPAdapter(); sender.SendMail("[email protected]", "[email protected]", "subject", "body"); Assert.Equal(1, server.ReceivedEmailCount); SmtpMessage mail = (SmtpMessage)server.ReceivedEmail[0]; Assert.Equal("[email protected]", mail.Headers["From"]); Assert.Equal("[email protected]", mail.Headers["To"]); Assert.Equal("subject", mail.Headers["Subject"]); Assert.Equal("body", mail.MessageParts[0].BodyData); server.Stop(); } }
以上是关于ASP.NET 系列:单元测试之SmtpClient的主要内容,如果未能解决你的问题,请参考以下文章
asp.net core 系列之允许跨域访问2之测试跨域(Enable Cross-Origin Requests:CORS)