ias*_*ons 53 .net testing smtp
我需要配置一个SMTP服务器来测试我发送电子邮件的网站(用于注册确认等).
我真的不希望发送电子邮件,我只是想确保我的代码是正确的.所以我希望能够检查电子邮件是否放在队列文件夹中.
任何人都可以推荐一个易于配置的SMTP服务器吗?
Lac*_*che 29
在.NET中,可以将SmtpClient配置为通过将电子邮件放在拾取目录中来发送电子邮件.
SmtpClient的默认构造函数从app.config获取其设置,因此对于测试环境,我们可以按如下方式配置它.
<configuration>
<system.net>
<mailSettings>
<smtp deliveryMethod="specifiedPickupDirectory">
<specifiedPickupDirectory pickupDirectoryLocation="path to a directory" />
</smtp>
</mailSettings>
</system.net>
</configuration>
Run Code Online (Sandbox Code Playgroud)
MSDN参考 - app.config mailSettings元素http://msdn.microsoft.com/en-us/library/w355a94k.aspx
对于那里的.NET人员.保持简单.
我们正在研究这个,然后其中一个开发人员记得有关配置设置,它允许您覆盖电子邮件的发送方式.
这将为每封电子邮件创建一个文件而不管它.
<system.net>
<mailSettings>
<smtp deliveryMethod="SpecifiedPickupDirectory">
<specifiedPickupDirectory pickupDirectoryLocation="\\SharedFolder\MailDrop\" />
</smtp>
</mailSettings>
</system.net>
Run Code Online (Sandbox Code Playgroud)
我认为博客文章A Simple SMTP Server Mock for .NET可以 为您提供所需内容:SMTP服务器模拟
SMTP服务器模拟基本上是一个虚假的SMTP服务器,可用于发送电子邮件的应用程序的单元测试.
此外,谷歌搜索smtp模拟服务器将为您提供一系列SMTP服务器用于测试目的.喜欢:
另一种方法是在 SmtpClient 周围创建一个实现相同接口的包装器。然后在您的类中注入并使用包装器。在进行单元测试时,您可以替换对方法调用和响应有期望的模拟包装器。
编辑:需要包装器(至少对于RhinoMocks),因为SmtpClient不是从接口派生的,并且没有虚拟方法。如果您使用可以直接模拟没有虚拟方法的类的模拟框架,则可以跳过包装器并直接注入 SmtpClient 模拟。
public class SmtpClientWrapper
{
private SmtpClient Client { get; set; }
public SmtpClientWrapper( SmtpClient client )
{
this.Client = client;
}
public virtual void Send( MailMessage msg )
{
this.Client.Send( msg );
}
...
}
public class MyClass
{
private SmtpClientWrapper Client { get; set; }
public MyClass( SmtpClientWrapper client )
{
this.Client = client;
}
public void DoSomethingAndNotify()
{
...
this.Client.Send( msg );
}
}
Run Code Online (Sandbox Code Playgroud)
测试(使用 RhinoMocks)为:
public void DoSomethingAndNotifySendsAMessageTest()
{
SmtpClientWrapper client = MockRepository.GenerateMock<SmtpClientWrapper>();
client.Expect( c => c.Send( new MailMessage() ) ).IgnoreArguments();
MyClass klass = new MyClass( client );
klass.DoSomethingAndNotify();
client.VerifyAllExpectations();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22557 次 |
| 最近记录: |