你的位置:首页 > ASP.net教程

[ASP.net教程]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();  }}
法国旅游大概多少钱到法国旅游要花多少钱去法国签证要几天办理法国签证费用出发去法国旅游“摄影师眼中的泰国”摄影展在成都西安两地举行 天津2015年有什么好玩的节庆活动?2015天津旅游日历出炉 厦门机场怎么去鼓浪屿? 2015奥林匹克公园冰灯节是什么时候?有哪些免费项目?北京奥林匹克公园怎么去? 爬山看夜景 武汉三大地点推荐 晒太阳吹海风 玩遍海南自驾全攻略 哇塞,太美了!沿海游客点赞达古冰山彩林 细数重庆十大最美婚纱摄影地 海口到三亚的动车最晚一班车是几点?全程多长时间?票价多少? 去丽江旅游会不会出现高原反应?该如何应对? 深圳到丽江有没有直达的火车?怎么坐火车去丽江? 三亚有动车吗?动车多少钱? 深圳锦绣中华有什么景点? 2013年情人节去深圳世界之窗多人吗? 深圳罗湖火车站离深圳北站有多远?怎么去? 深圳罗湖怎么坐车去广州百万葵园? MCP1725-1202E/SN Datasheet MCP1725-1202E/SN Datasheet MCP1725-1802E/SN Datasheet MCP1725-1802E/SN Datasheet MCP1725-2502E/SN Datasheet MCP1725-2502E/SN Datasheet 广州到海拉尔国家森林公园旅游 广州到海拉尔国家森林公园旅游 广州到海拉尔国家森林公园旅游 广州到海拉尔万人坑旅游 广州到海拉尔万人坑旅游 广州到海拉尔万人坑旅游 广州到海兰云天温泉旅游 广州到海兰云天温泉旅游 广州到海兰云天温泉旅游