我有一个方法
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
{
/* ... */
}
}
}
Run Code Online (Sandbox Code Playgroud)
我有这个方法的单元测试,邮件被发送到我自己,所以它并不可怕(比没有测试更好),但我不想发送邮件.
我还可以做些什么?
(注意:IMail和IMailer是发送电子邮件的外部库的一部分.它是内部编写的,所以我可以根据需要修改它,尽管在这种情况下我看不到需要)
使用依赖注入的标准方法是需要IMailerin ClassUnderTests的构造函数.如果您这样做,则将模拟邮件程序传递给您的测试,并且基类不需要了解有关邮件或邮件程序的任何信息.
如果由于某种原因这是不合需要的(这通常只在你不控制底层类时才有意义),你可以使用setter injection("property injection").
| 归档时间: |
|
| 查看次数: |
266 次 |
| 最近记录: |