3

2 つの異なる Sidekiq ワーカーを開始する方法があります。1 つは電子メールを送信し、もう 1 つはフロントエンドの Faye チャネルに公開します。Cucumber 機能で動作をテストしようとしています。コードは開発中に正常に動作します。

作業者の努力の実際の結果を確認できるように、 に含めrequire 'sidekiq/testing/inline'ました。features/support/env.rb電子メールのテストは (Spreewald 電子メールの手順を使用して) 正常に動作しますが、他のワーカーが実行されたという証拠は見当たりません。ワーカーに「logger.debug」ステートメントを含めましたが、それらは表示されませんlog/test.log- 他に見るべき場所はありますか?

ワーカーが実行されていない可能性は低いですが、フロントエンドは Faye メッセージを受信して​​いないようです。デバッグ方法に関する提案は大歓迎です。

4

2 に答える 2

3

次のように適切な require ステートメントを追加することで、キュウリ テストで Sidekiq ワーカーを実行できましたsupport/env.rb

require 'sidekiq/testing'

Spork を使用している場合は、prefork ブロックに入れます。

Spork.prefork do
  # ...
  require 'sidekiq/testing'
  # ...

次に、次のような機能を書きました。

When I submit the form that adds jobs to the queue
Then I should see "Your jobs were added to the queue."
When I wait for the jobs to finish
And I refresh the page
Then the completed jobs are listed on the page

次に、キューを手動で排出します。

When(/^I wait for the jobs to finish$/) do
  MySpecialWorker.drain
end

Sidekiq::Testing.inline!また、require ステートメントの後に を追加することで、すべてのジョブをインラインで実行できる場合もありますがsupport/env.rb、これらのジョブのみを実行したかったので、必要なジョブのみを手動で実行することにしました。

于 2014-03-28T00:03:20.293 に答える