我正在尝试编写一个功能测试,其中用户留下评论,然后通过rails邮件发送通知。如果我改变我的邮件电话使用.deliver_now
但我不想在生产中使用,那么一切都在这里工作。我需要能够测试异步邮件传递,甚至只是强制邮件程序现在在测试场景中交付。
login_as campaign_owner
visit campaign_path campaign
fill_in 'Comment', with: 'Foo'
click_on 'Submit'
expect(page).to have_content I18n.t('comments.create.success')
expect(campaign.comments.count).to eq 1
expect(UserMailer.deliveries.count { |d| d.to == [campaign_watcher.email]}).to eq 1
答案 0 :(得分:0)
您可以随时通过测试正在运行的环境来更改邮件传递的行为。
例如
if Rails.env.test?
UserMailer.mail_template().deliver_now
else
UserMailer.mail_template().deliver_later
end
虽然您的测试实际给您的价值是否值得怀疑