【问题标题】:How to test email sending using Rspec?如何使用 Rspec 测试电子邮件发送?
【发布时间】:2009-11-16 14:21:41
【问题描述】:

使用 rspec 和 Rails 测试电子邮件发送的最佳实践和工具是什么?

例如,我如何测试一封电子邮件是否已发送,或者我应该测试什么才能获得有效的测试和可接受的覆盖率。

如果你们需要一个例子,我将如何去测试这个:

class UserMailer < ActionMailer::Base

 def jobdesc_has_been_reviewed(user, title)
    @body[:title]  = title
    @body[:jobdesc]  = jobdesc
    @body[:url]  = "http://" + user.account.subdomain + "." + Constants::SITE_URL + "/jobdescs/#{jobdesc.id}"
 end

end

【问题讨论】:

    标签: ruby-on-rails ruby tdd rspec


    【解决方案1】:

    email-spec 看起来是个不错的库

    http://github.com/bmabey/email-spec

    【讨论】:

    • 不,我没试过,但是这个库封装了我使用的技术。
    • 我已经将 email-spec 与 RSpec 和 Cucumber 一起使用,它看起来正是您正在寻找的。​​span>
    • 我已经测试过了,很棒!谢谢
    【解决方案2】:

    你想具体测试什么?

    您要测试该电子邮件是否确实已发送?​​

    我不推荐它,因为它会使您的测试变慢,而且它实际上取决于您用于运行测试的机器(网络连接、smtp 服务器)。

    我通常做的是确保发送电子邮件的控制器操作/模型/rake 任务正确运行(意思是没有错误,我存根最后的发送调用)。 我还确保邮件的正文、标题和收件人是正确的。

    编辑:

    与测试没有直接关系,但我只是遇到了这个article

    我喜欢他使用模型发送电子邮件的观点。 所以要详细解释一下:

    我会使用控制器来设置视图变量,例如 @body、@title、@recipient。

    所以我会测试给定正确的参数,邮件模板(这是一个视图)是否正确呈现。 从我的角度来看,这是可能发生的错误。

    我将在今天晚些时候回家时更新这篇文章。

    【讨论】:

    • 我真的不知道我想测试什么...我正在寻找正确的覆盖范围(假设测试电子邮件是否已发送并且它是否包含有效信息)。你能给我指点一下你如何去做你在上一段中描述的事情吗?我对 rspec 还很陌生,所以你能给我的信息越多,我就会越开心:) 谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多