我在使用Rails 3的测试模式发送邮件时遇到了一些奇怪的问题。
看起来我的邮件程序没有返回任何内容。例如,我有一个名为UserMailer的邮件程序。用户可以在应用程序中进行需要批准的更改,因此该程序具有一个名为changes_approved的方法,该方法应该向用户发送电子邮件通知他们的更改已被批准。
UserMailer < ActionMailer::Base
default :from => "from@example.com"
def changes_approved(user, page)
@user = user
@page = page
mail(:to => user.email, :subject => "Your changes have been approved")
end
end
在我的控制器中,我有以下代码行:
UserMailer.changes_approved(@page_revision.created_by, @page_revision.page).deliver
然而,我的测试在这一点上失败并出现以下错误:
“undefined method `deliver' for nil:NilClass”
当我通过浏览器在开发站点(http://localhost:3000)上触发相同的操作时,电子邮件会正确发送,并且一切都工作得很好。此外,我正在使用Devise进行身份验证,其邮件似乎在测试和开发模式下都能正常工作。毫无疑问,我没有遇到相同的错误,根据我的email-spec测试,一切都正常。
因此,我认为问题出在我的邮件处理程序上,而不是我的测试邮件配置本身,但我不知道具体问题出在哪里。如果您有任何建议,将不胜感激。
谢谢