【问题标题】:Integration Testing Emails sent from an MVC3 .Net application从 MVC3 .Net 应用程序发送的集成测试电子邮件
【发布时间】:2011-06-28 11:37:18
【问题描述】:

在 .NET MVC3 Web 应用程序的开发环境中,为邮件服务生成可靠的集成测试结果的好方法是什么?电子邮件服务已经被隔离在一个接口后面,并且为它编写了单元测试,但我很好奇是否有任何好的、通用的工具或策略可以使它变得容易,而不是发送一些电子邮件地址并拥有一些完整的- 在某处设置了 smtp 服务器。

应该容易测试的东西应该是:
- 如果设置正确,可以发送电子邮件
- 如果设置不正确,我们能否检测到它并恢复该状态。

【问题讨论】:

  • 很好奇,这听起来像是您试图通过网页发送大量电子邮件。如果是这种情况,那么您可能需要阅读这篇文章。stackoverflow.com/questions/2623872/…
  • 集成测试不意味着针对您将使用的 smtp 服务器进行测试吗?如果您在本地伪造一个 smtp 服务器或其他什么东西并针对它进行测试,那么您的测试几乎没有价值。
  • 针对伪造的 smtp 服务器对其进行测试的价值在于,我可以测试该服务是否正常工作并且电子邮件是否正确发送到 smtp 服务器。我只是确保我可以验证我能做的一切都是正确的,而不是“编码和祈祷”

标签: c# asp.net-mvc email integration-testing


【解决方案1】:

如果您使用 web.config 存储 SMTP 服务器设置,一个很好的提示是,您可以使用以下配置将所有发送的电子邮件转储到开发环境的目录中。

<system.net>
  <mailSettings>
    <smtp deliveryMethod="SpecifiedPickupDirectory">
      <specifiedPickupDirectory pickupDirectoryLocation="c:\email"/>
      <network host="localhost"/>
    </smtp>
  </mailSettings>
</system.net>

【讨论】:

  • 我同意这种做法。我做了类似的事情,实现了一个 EmailProviderFactory,让您可以在 web.config 中指定默认提供程序。在生产环境中,它被设置为返回一个将发送电子邮件的提供者,在开发中,它被设置为返回一个将电子邮件写入文件系统的提供者。
【解决方案2】:

您可以使用特殊版本的 SMTP 服务器进行测试,看看:

Testing Mail Functionality with Neptune

Antix Developer SMTP server

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-08
    • 2020-05-24
    • 2011-05-08
    • 2011-08-06
    • 2011-02-03
    相关资源
    最近更新 更多