如何使用Rspec测试电子邮件发送?

时间:2009-11-16 14:21:41

标签: ruby-on-rails ruby tdd rspec

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

例如,我如何测试已发送电子邮件或我应该测试什么以进行有效测试和可接受的覆盖范围。

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

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

2 个答案:

答案 0 :(得分:24)

email-spec看起来像一个好的库

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

答案 1 :(得分:0)

您想要准确测试什么?

您想测试电子邮件确实是真的发送过吗?

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

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

编辑:

与测试没有直接关系,但我刚刚过了article

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

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

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

我将在今天晚些时候回国后用例子更新这篇文章。

相关问题