2012-11-15 6 views
5

私はREADMEに従ってdevise_asyncの指示に従いました。私はDevise 2.1.2とdelayed_jobをローリングしています。私のキュウリ試験では、登録手続きの一環として確認メールが届かなくなりました。テストの一環としてやるべきことがありますか?私はすでにテスト環境で次のように設定することで、テストの実際の遅延をスキップするように遅延ジョブを設定しました。devise_asyncをCucumberで使用するにはどうすればよいですか?

Delayed::Worker.delay_jobs = false 

しかし、この設定をtrueにしても、それでも遅くなりますが、失敗します。私がdevise_asyncの宝石と関連する行を削除すると、すべてが元気に復活します。

おかげで、 グレアム

+0

を参照してください。私たちはdelayed_jobではなく、sidekiqを使用していますので、あなたのソリューションは私には当てはまりません。クリーナー戦略を切り捨てに設定しましたが、それでも失敗します。誰でもこれらのゲームをうまくやる方法を知っていますか? – Jazz

答えて

3

新しいバージョンのdevise-asyncは、レコードがデータベースにコミットされた後で電子メールをトリガーします。 RSpecでは、各テストはデフォルトでトランザクションにラップされます。キュウリも同じですか?その場合、それらのテストトランザクションをオフにする必要があります。ここで

私はRSpecのために使うものです:あなたはキュウリENVで取引をオフにすることができ http://www.denniskuczynski.com/2012/06/22/changing-individual-test-configuration-based-on-passed-in-options.html

+1

こんにちはデニス。私のDBクリーニング戦略の切り捨てに切り替えると、失敗したテストが修正されました。素晴らしいもの!私は現在、大部分のテストではトランザクションを使用し、選択されたテストではトランケーションを使用するのに苦労していますが、別の質問でそれを保存します。多くのありがとう、 – 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- –

1

あなたが遅延:: Worker.new.work_offのアプローチを使用してみましたか? Devise asyncで動作するかどうかは不明ですが、以前は電子メールのチェックに役立っていました。

このステップ

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

を使用して電子メールをテストする前に、このステップを実行していますか?

+0

これを試しましたが、残念ながらそれは私のためには機能しませんでした。 – Simmo

1

サイドキックでは、いくつかのコメンターがここで尋ねるように、解決策は労働者がインラインでテストを実行することです:

require 'sidekiq/testing' 
Sidekiq::Testing.inline! 

は私もキュウリでの作業devise_async取得するために苦労していますhttps://github.com/mperham/sidekiq/wiki/Testing

関連する問題