欢迎光临
梦想从学习开始!

单元测试之SmtpClient| 小熊测试

本文主要介绍 单元测试之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("sender@here.com", "receiver@there.com", "subject", "body");

Assert.Equal(1, server.ReceivedEmailCount);

SmtpMessage mail = (SmtpMessage)server.ReceivedEmail[0];

Assert.Equal("sender@here.com", mail.Headers["From"]);

Assert.Equal("receiver@there.com", mail.Headers["To"]);

Assert.Equal("subject", mail.Headers["Subject"]);

Assert.Equal("body", mail.MessageParts[0].BodyData);

server.Stop();

}

}

  运行结果:

您现在正在阅读的是由小熊分享邦为您整理的 单元测试之SmtpClient| 小熊测试

 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小熊分享邦(www.xxfxb.com),希望大家能坚持软件测试之路,谢谢。

赞(0) 打赏
未经允许不得转载:小熊分享邦 » 单元测试之SmtpClient| 小熊测试

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏