Тестирование с помощью RSpec и Action Mailer: очистка электронных писем, находящихся в очереди?

Active Job Test Helper предоставляет полезный метод clear_enqueued_jobs.

Есть ли эквивалент для Action Mailer для очистки электронных писем, находящихся в очереди?


person colemerrick    schedule 13.02.2019    source источник


Ответы (1)


Да, вы можете настроить rspec для очистки почтовых программ перед каждым тестом, например:

RSpec.configure do |config|
  config.before(:each) do
    ActionMailer::Base.deliveries.clear
  end
end

В случае почты, поставленной в очередь, Active Job Test Helper включен в ActiveMailer::TestHelper, поэтому вы также сможете использовать метод clear_enqueued_jobs.

Источник: https://github.com/rails/rails/blob/94b5cd3a20edadd6f6b8cf0bdf1a4d4919df86cb/actionmailer/lib/action_mailer/test_helper.rb#L9

person JCorcuera    schedule 13.02.2019
comment
Это очищает количество отправленных электронных писем, а не поставленных в очередь. Вы также можете написать это как ActionMailer::Base.deliveries = [] - person colemerrick; 15.02.2019
comment
@bagofcole Я обновил ответ, дайте мне знать, если это сработает. - person JCorcuera; 15.02.2019
comment
Я подтвердил, что это работает. Было бы неплохо, если бы это было в документации: api.rubyonrails.org/classes/ActiveJob/ TestHelper.html. @JCorcuera Вы должны подумать о том, чтобы внести свой вклад! - person colemerrick; 06.03.2019