【发布时间】:2012-04-10 15:37:47
【问题描述】:
我有一个ActionMailer 课程
class UserMailer < ActionMailer::Base
default from: "no-reply@spicy-millennium.com"
def submission_reminder user
@user = user
mail :to => user.email, :subject => "Your timesheet needs to be submitted!"
end
end
如果我在开发中调用UserMailer.submission_reminder(current_user),它会返回一个Mail::Message 对象,就像预期的那样。
我的应用程序中调用此方法的位置在我的 lib 文件夹中的一个模块中:
module TimesheetSubmissionNotifier
def self.send_submission_reminders
User.all.each { |user| UserMailer.submission_reminder(user).deliver }
end
end
当我在开发中调用TimesheetSubmissionNotifier.send_submission_reminders 时,UserMailer.submission_remind(user) 返回邮件消息并调用传递,一切正常。
问题是当我通过 rspec 测试调用 TimesheetSubmissionNotifier.send_submission_reminders 时,UserMailer.submission_reminder(user) 返回 nil。
如果我直接从 rspec 测试中调用 UserMailer.submission_reminder(user),它会按预期返回邮件消息。
这是我的 config/environment/test.rb 中唯一与 ActionMailer 相关的行:
config.action_mailer.delivery_method = :test
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
任何想法为什么该方法返回 nil?
【问题讨论】:
-
当你说直接从 rspec 测试调用
UserMailer.submission_reminder(user)时,你是如何初始化你传递给方法的 user 对象的?您是从用户表中获取它还是使用工厂等构建它?
标签: ruby-on-rails ruby-on-rails-3 rspec actionmailer