用RSpec设计异步gem

用RSpec设计异步gem,rspec,devise,resque,Rspec,Devise,Resque,我正在使用Deave async gem异步发送我的Deave电子邮件-使用Resque 我正在做一些简单的RSpec控制器测试,通过检查ActionMailer::Base.deliveries数组来确保发送忘记的密码 在我开始使用DeVIATE async gem之前,它就已经起作用了。我怎样才能立即“发送”队列中的电子邮件,使它们以ActionMailer::Base.deliveries结束 例如,当我使用delayed_作业异步发送它们时(不使用designe async gem),我

我正在使用Deave async gem异步发送我的Deave电子邮件-使用Resque

我正在做一些简单的RSpec控制器测试,通过检查ActionMailer::Base.deliveries数组来确保发送忘记的密码

在我开始使用DeVIATE async gem之前,它就已经起作用了。我怎样才能立即“发送”队列中的电子邮件,使它们以ActionMailer::Base.deliveries结束

例如,当我使用delayed_作业异步发送它们时(不使用designe async gem),我可以将其添加到designe初始值设定项中:

Delayed::Worker.delay_jobs = !Rails.env.test?

这将直接发送电子邮件,以便于测试。那么-在使用Desive async时,我可以使用类似的技术吗?

好的-我找到了答案:

在初始值设定项文件中,执行以下操作:

Resque::Mailer.excluded_environments = [:test]
Resque.inline = Rails.env.test?
对于常规重新确认作业,请添加以下内容:

Resque::Mailer.excluded_environments = [:test]
Resque.inline = Rails.env.test?

我在spec_helper.rb中放置了以下行:

Devise::Async.enabled = false

它成功了。

太好了。这修复了my my service的规范示例断言
ActionMailer::Base.deliveries.count
在DB中创建新的可确认用户时增加的问题。在我引入Deviate Async之前,规范是通过的,但之后这些规范开始失败。此配置还原了失败的规范示例。