繁体   English   中英

如何在Rails RSpec功能测试中测试异步邮件?

[英]How can I test an asyncronous mailer in a rails RSpec feature test?

我正在尝试编写功能测试,其中用户发表评论,然后通过rails mailer发送通知。 如果我将邮件程序调用更改为使用.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

您始终可以通过测试所运行的环境来更改邮件传递的行为。

例如,

if Rails.env.test?
   UserMailer.mail_template().deliver_now
else
   UserMailer.mail_template().deliver_later
end

尽管您的测试实际上为您带来了什么价值值得怀疑

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM