2012-09-18 29 views
2

我使用devise-async gem异步发送我的设计电子邮件 - 使用Resque。在RSpec中使用devise-async gem

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

在我开始使用devise-async gem之前,它曾经工作过。我怎样才能立即“发送”队列中的电子邮件,以便他们最终进入ActionMailer :: Base.deliveries?

例如 - 当我用delayed_job的异步发送它们(不使用色器件 - 异步宝石),我可以添加这对我的色器件初始化:

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

这将提供电子邮件,立刻使它更容易测试。所以 - 在使用devise-async时是否有类似的技术?

回答

0

好了 - 我已经找到了答案:

在一个初始化文件,请执行以下操作:

Resque::Mailer.excluded_environments = [:test] 

对于一般Resque工作,添加以下内容:

Resque.inline = Rails.env.test? 
3

我把spec_helper.rb中的以下行:

Devise::Async.enabled = false 

它工作。

+0

太好了。这固定了我的服务的规范示例声明'ActionMailer :: Base.deliveries.count'增加了一个新的可确认的用户在数据库中创建。在我介绍Devise-Async之前,规范已经过去了,但之后那些开始失败。这个配置恢复了失败的spec示例。 –