gpt4 book ai didi

c# - Void 功能的 NUnit 测试(发送电子邮件)

转载 作者:行者123 更新时间:2023-11-30 13:47:15 26 4
gpt4 key购买 nike

我有一个发送电子邮件的 void 函数。我需要为这个功能编写测试。如何做到这一点?

public void SendAdminMail(string subject, string body, string adminAddress)
{

var email = Email.
From(ConfigurationManager.AppSettings["Mail.NoReply.Address"].ToString(CultureInfo.InvariantCulture)).
To(adminAddress).
Subject(subject).
Body(body).
UsingClient(GetOfficeClient());
email.Message.SubjectEncoding = Encoding.UTF8;
email.Message.BodyEncoding = Encoding.UTF8;

email.Send();
}

最佳答案

在这种情况下,这将非常困难 - 除非您能够通过反射以某种方式切换 Email(正如 juhan_h in his answer 有趣地指出的那样,现在也许并不那么困难;))。

典型的解决方案是为您的类提供一个接口(interface),例如interface EmailFactory。然后你会:

private EmailFactory emailFactory;
public void SendAdminMail(string subject, string body, string adminAddress)
{
var email = emailFactory
.From(ConfigurationManager
.AppSettings["Mail.NoReply.Address"]
.ToString(CultureInfo.InvariantCulture))
.To(adminAddress)
.Subject(subject)
.Body(body)
.UsingClient(GetOfficeClient());

email.Message.SubjectEncoding = Encoding.UTF8;
email.Message.BodyEncoding = Encoding.UTF8;

email.Send();
}

然后您可以向您的类(class)提供该工厂的 stub ,这将创建电子邮件模拟,您可以在其上验证正确的行为。

关于c# - Void 功能的 NUnit 测试(发送电子邮件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18269284/

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