У меня есть тест RSpec так:Используя RSpec для тестирования ActionMailer с should_receive
it "should ..." do
# mailer = mock
# mailer.should_receive(:deliver)
Mailer.should_receive(:notification_to_sender)#.and_return(mailer)
visit transactions_path
expect do
page.should_not have_css("table#transactions_list tbody tr")
find('#some_button').click
page.should have_css("table#transactions_list tbody tr", :count => 1)
end.to change{Transaction.count}.by(1)
end
Если удалить закомментированные части в верхней части, проходит тест. Но с комментариями разделов (как я ожидал бы написать это) тест не удался.
Я получил комментарии от некоторых поисковых систем по сети, но я действительно не понимаю, что он делает или почему это исправляет. Кажется, должен быть более чистый способ проверить электронные письма без этого.
Может ли кто-нибудь пролить свет? Благодаря!
Я использую рельсы 3 и RSpec-рельсы 2.10.1
hmm, я не уверен, почему, но все равно кажется, что это не сработало:/показанная ошибка не имеет смысла (из другой строки), но когда я прокомментирую строку should_receive, она снова работает. О, хорошо ... теперь на большие проблемы. –
API ActionMailer фактически изменился с «Mailer.deliver_notification_to_sender» в Rails 2.x на «Mailer.notification_to_sender.deliver» в Rails 3.0. Учитывая это изменение, методы экземпляра доставки больше не завертываются в методы класса, так как без доставки вызова вы возвращаете экземпляр «Mail :: Message» – MAP
В конечном итоге это решило мои проблемы с DelayedMailer, спасибо –