2012-09-18 52 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示例。 –