Rails挂钩-`deliver.action_mailer`不触发

时间:2019-02-11 18:31:49

标签: ruby-on-rails actionmailer instrumentation

我正在尝试在Rails应用程序中向ActionMailer添加一些日志记录/审核,并且正在尝试像这样在初始化器中插入deliver.action_mailer钩子:

ActiveSupport::Notifications.subscribe 'deliver.action_mailer' do |_name, _start, _finish, _id, payload|
  # Do stuff here
end

但是,当我运行测试并运行MyMailer.mailer_method.deliver!时,挂钩永远不会被解雇。我在某处错过了一步吗?

1 个答案:

答案 0 :(得分:0)

在测试环境中,电子邮件不会发送,但会存储在一个数组中

  

#告诉Action Mailer不要将电子邮件发送到现实世界。
   #:test传递方法将已发送的电子邮件累积在
   #ActionMailer :: Base.deliveries数组。
  config.action_mailer.delivery_method =:test

您可以像这样编写测试:

subject { email.deliver_now }

it 'sends an e-mail' do
  expect { subject }.to change { ActionMailer::Base.deliveries.count }.by(1)
end