Redmine插件中的ActionMailer错误

时间:2012-08-08 16:54:52

标签: actionmailer redmine redmine-plugins

我在app / models中有以下邮件代码。

class Mailman < ActionMailer::Base

  default :from => "xyz"
  # Sends an Email reminder to all the users who missed a pickup date
  def check_out_reminder(reservation)
    recipient = reservation.user.mail
    subject   = "Checkout Reminder for '#{reservation.bookable.name}'."
    mail(:to => recipient, :subject => subject)
  end

  def check_in_reminder(reservation)
    recipient = reservation.user.mail
    subject   = "Checkin Reminder for '#{reservation.bookable.name}'."
    mail(:to => recipient, :subject => subject)
  end

end

我在test / unit中有测试代码:

require File.expand_path('../../test_helper', __FILE__)

class MailmanTest < ActionMailer::TestCase
  fixtures :reservations

  def test_check_out_reminder
    reservation = Reservation.first 
    # Send the email, then test that it got queued
    Mailman.check_out_reminder(reservation).deliver
    assert !ActionMailer::Base.deliveries.empty?
  end

end

执行测试会出错:

test_check_out_reminder(MailmanTest):
NoMethodError: undefined method `mail' for nil:NilClass
    /Users/myth/Learn/Code/redmine/plugins/redmine_asset_tracker/app/models/mailman.rb:9:in `check_out_reminder'
    /Users/myth/.rvm/gems/ruby-1.9.3-p0/gems/actionpack-3.2.3/lib/abstract_controller/base.rb:167:in `process_action'
    /Users/myth/.rvm/gems/ruby-1.9.3-p0/gems/actionpack-3.2.3/lib/abstract_controller/base.rb:121:in `process'
    /Users/myth/.rvm/gems/ruby-1.9.3-p0/gems/actionpack-3.2.3/lib/abstract_controller/rendering.rb:45:in `process'
    /Users/myth/.rvm/gems/ruby-1.9.3-p0/gems/actionmailer-3.2.3/lib/action_mailer/base.rb:456:in `process'
    /Users/myth/.rvm/gems/ruby-1.9.3-p0/gems/actionmailer-3.2.3/lib/action_mailer/base.rb:451:in `initialize'
    /Users/myth/.rvm/gems/ruby-1.9.3-p0/gems/actionmailer-3.2.3/lib/action_mailer/base.rb:438:in `new'
    /Users/myth/.rvm/gems/ruby-1.9.3-p0/gems/actionmailer-3.2.3/lib/action_mailer/base.rb:438:in `method_missing'
    /Users/myth/Learn/Code/redmine/plugins/redmine_asset_tracker/test/unit/mailer_test.rb:9:in `test_check_out_reminder'
    /Users/myth/.rvm/gems/ruby-1.9.3-p0/gems/mocha-0.11.4/lib/mocha/integration/mini_test/version_230_to_262.rb:28:in `run' 

为什么即使我继承了正确的类,也无法识别邮件方法?

1 个答案:

答案 0 :(得分:0)

问题是缺少夹具。 行recipient = reservation.user.mail导致错误,而不是Action Mailer的mail(:to => recipient, :subject => subject)