2012-11-15 53 views
5

我已按照自述文件按照devise_async的說明進行操作,並且正在運行Devise 2.1.2和delayed_job。在我的黃瓜測試中,我不再收到確認電子郵件作爲註冊過程的一部分。作爲測試的一部分,我應該做些什麼?通過在我的測試環境中設置以下內容,我已經設置了延遲作業以跳過測試的實際延遲。如何使用Cucumber獲得devise_async?

Delayed::Worker.delay_jobs = false 

但即使將此設置爲true,它仍會失敗,儘管速度更慢。如果我刪除devise_async gem和相關的行,所有事情都會重新開始。

感謝, 格雷姆

+0

我掙扎着爬devise_async黃瓜工作爲好。我們使用的是sidekiq,而不是delayed_job,所以你的解決方案不適用於我。我已將清潔策略設置爲截斷,但仍然失敗。任何人都知道如何使這些發揮好? – Jazz

回答

3

devise-async的新版本會在記錄提交到數據庫後觸發電子郵件。使用RSpec,默認情況下每個測試都包含在一個事務中。黃瓜是否也這樣做?在這種情況下,您需要關閉這些測試事務。

這是我使用的RSpec: http://www.denniskuczynski.com/2012/06/22/changing-individual-test-configuration-based-on-passed-in-options.html

+1

嗨丹尼斯。切換到我的數據庫清理策略截斷修復了失敗的測試。好東西!我現在正在努力使用大多數測試的事務和截斷選定的測試,但是我會將其另存爲一個不同的問題。非常感謝, – Simmo

+1

丹尼斯,我無法使用你的要點切換策略。我必須將if語句更改爲example.options中的「if example.metadata [:with_transaction_callbacks]」。使用rspec 2.12.0 – Agustin

+0

@Dennis Kuczynski您在您的博客上更改了某些內容並且鏈接已損壞,請將一些更多詳細信息複製到答案中,google緩存版http://webcache.googleusercontent.com/search?q=cache:endxdMrzntoJ: www.denniskuczynski.com/2012/06/22/changing-individual-test-configuration-based-on-passed-in-options.html+http://denniskuczynski.com/2012/06/22/changing-individual- test-configuration-based-pass-in-options.html&cd = 1&hl = pl&ct = clnk –

1

您是否嘗試過使用延遲:: Worker.new.work_off的方法呢? 不確定它適用於Devise async,但它以前用於檢查電子郵件。

使用這一步

Given /^Jobs are being dispatched$/ do 
    Delayed::Worker.new.work_off 
end 

並運行測試之前電子郵件這一步?

+0

試過這個,但不幸的是它沒有爲我工作。 – Simmo