2015-09-12 4 views
0

Не могу понять, почему команда bundle exec rake test не работает, но когда я вручную пытаюсь отправить электронное письмо, оно работает и отображается так, как должно.Тестирование ActionMailer ArgumentError: неправильное количество аргументов (0 для 1)

Сообщение об ошибке: ArgumentError: неверное число аргументов (0 для 1) и выделяет def stock_alert_email(stock) из user_mailer.rb

user_mailer.rb

def stock_alert_email(stock) 
    @stock = stock 
    mail(to: '[email protected]', subject: "Stock Alert! %s has reached %s" % [@stock[0].to_s, @stock[1].to_s]) 
end 

user_mailer_test.rb

test "stock_alert_email" do 
    email = UserMailer.stock_alert_email().deliver_now 
    assert_not ActionMailer::Base.deliveries.empty? 

    # Test the body of the sent email contains what we expect it to 
    assert_equal ['[email protected]'], email.from 
    assert_equal ['[email protected]'], email.to 
    assert_equal "Stock Alert! %s has reached %s" % [@stock[0].to_s, @stock[1].to_s], email.subject 
    assert_equal read_fixture('stock_alert_email').join, email.body.to_s 
end 

where I call the mail to send

UserMailer.stock_alert_email(@stock).deliver_now 

Когда я использую binding.pry перед выше ^^ линии я вижу, что @stock является

[1] pry(main)> @stock 
=> ["AAPL", 114.21] 

ответ

0

Проблема здесь в этой линии

email = UserMailer.stock_alert_email().deliver_now 

Вы не проходит какой-либо аргумент stock_alert_email, пока он ожидает аргумент.

+0

такая глупая ошибка спасибо – Daniel

Смежные вопросы