c# – 测试在不发送邮件的情况下发送电子邮件的方法
发布时间:2020-12-15 23:55:17 所属栏目:百科 来源:网络整理
导读:我有一个方法 public abstract class Base{ public void MethodUnderTest();}public class ClassUnderTest : Base{ public override MethodUnderTest() { if(condition) { IMail mail = new Mail() { /* ... */ }; IMailer mailer = new Mailer() { /* ... *
我有一个方法
public abstract class Base { public void MethodUnderTest(); } public class ClassUnderTest : Base { public override MethodUnderTest() { if(condition) { IMail mail = new Mail() { /* ... */ }; IMailer mailer = new Mailer() { /* ... */ } mailer.Send(mail); } else { /* ... */ } } } 我有这个方法的单元测试,邮件被发送给我自己,所以它并不可怕(比没有测试更好),但我不想发送邮件. >我遇到的问题是我不希望类中的测试特定代码(即if(testMode)返回;而不是发送邮件) 我还可以做些什么? (注意:IMail和IMailer是发送电子邮件的外部库的一部分.它是内部编写的,所以我可以根据需要修改它,尽管在这种情况下我看不到需要) 解决方法
使用依赖注入的标准方法是在ClassUnderTests的构造函数中要求IMailer.如果您这样做,则将模拟邮件程序传递给您的测试,并且基类不需要了解有关邮件或邮件程序的任何信息.
如果由于某种原因这是不合需要的(这通常只在您不控制基础类时才有意义),您可以使用setter injection(“属性注入”). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |