2012-08-08 42 views
3

我在app/models中有以下郵寄編碼。Redmine插件中的ActionMailer錯誤

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 

我在測試/檢驗碼單元,其去爲:

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' 

爲什麼沒有被確認的郵件的方法即使我繼承了正確的課程?

回答

0

這個問題是一個缺少的夾具。 行recipient = reservation.user.mail是導致錯誤,而不是行動梅勒的mail(:to => recipient, :subject => subject)

+0

你怎麼會發現這是一個夾具問題?另外,接受你自己的答案,讓人們知道它已經解決了。 :) – 2012-08-17 15:10:06