gpt4 book ai didi

c# - 在 C# 中为电子邮件或 SMS 发件人等开放系统编写单元测试

转载 作者:太空宇宙 更新时间:2023-11-03 21:50:29 25 4
gpt4 key购买 nike

我想为我的项目中的电子邮件和 SMS 发件人编写单元测试,当然,因为它们是开放系统,我无法从头到尾测试它们的功能。所以我正在寻找一种测试它们的聪明方法。

下面是我用来发送电子邮件和短信的代码:

邮箱:

    public void Send(MailMessage msg)
{
SmtpClient client = new SmtpClient("smtp.gmail.com", 587);
client.EnableSsl = true;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.Credentials = new NetworkCredential(emailSetting.EmailUser
, emailSetting.EmailPass);
client.Send(msg);
}

短信:

   public void SendSMS( String toNumber, String message)
{
if (client != null)
client.SendSmsMessage(smsSetting.SMS_Num, toNumber, message);
}

最佳答案

问题在于,如果您真的要进行单元测试,那么您需要模拟邮件/短信客户端。

如果您想实际发送电子邮件(如果它们在一夜之间/在开发周期中运行会导致垃圾邮件),那么它们不会归类为单元测试,而是集成测试。

举个例子:

 public class EmailThingy
{
private readonly IEmailClient _client;

public EmailThingy(IEmailClient client)
{
_client = client;
}

public void Send()
{
// do stuff with client
}
}

在你的单元测试中

    [Test]
public void SendEmail()
{
var clientMock = MockRepository.GenerateMock<IEmailClient>();

// define behaviour for clientmock

var sut = new EmailThingy(clientMock);
sut.SendMail();
}

关于c# - 在 C# 中为电子邮件或 SMS 发件人等开放系统编写单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14797671/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com