代码之家  ›  专栏  ›  技术社区  ›  Miyagi Coder

单元测试我的电子邮件服务

  •  2
  • Miyagi Coder  · 技术社区  · 17 年前

    如何为使用System等外部服务的方法编写单元测试。网。邮件?

    我是否只检查返回值,看看发送电子邮件时是否有任何错误,如果没有错误,则假设它已成功发送?

    2 回复  |  直到 17 年前
        1
  •  7
  •   Gerrie Schenck    17 年前

    mock object 对于邮件服务。

    简而言之,这意味着您编写了一个可以替换发送邮件行为的类。通过这种方式,您可以非常容易地为测试创建不同的情况:成功的邮件、失败的邮件等。

    http://www.programmersheaven.com/user/pheaven/blog/217-An-Introduction-to-Mock-Objects/

    另一个,带有代码示例: http://blogs.clearscreen.com/ragc/archive/2004/08/31/395.aspx

        2
  •  4
  •   Paul Stovell    17 年前

    这取决于你想要的测试水平。如果你更关心测试方法,而电子邮件只是其中的一小部分,那么你可能会考虑嘲笑电子邮件发送服务。 的链接很好。

    • 使用 SmtpDeliveryLocation 将电子邮件输出到文件夹而不是邮件服务器。然后,您可以检查文件夹。
    • 发送电子邮件,然后查询远程POP服务器以查看是否已到达。
    • 如果没有例外,发送并假设它刚刚工作。我不记得SmtpClient是什么。发送是阻塞还是非阻塞。

    因为这些测试通常意味着与外部事物进行对话,所以它们被称为 integration tests

    但总的来说,我认为你更关心的是确保格式/电子邮件地址正确,而不是微软是否正确实现了SmtpClient。因此,单元测试和模拟在那里更有意义。