0

残念ながら、特定の質問 (または手がかり) はありませんが、誰かが私を正しい方向に向けてくれることを望んでいました。

すべてのテスト (rspec 仕様) を実行すると、特に遅延ジョブに関連する 2 つのテストが失敗します。

このスペック ファイルを単独で実行すると (rspec ./spec/controllers/xxx_controller_spec.rb)、すべてのテストがパスします... これは一般的な問題ですか? 何を探すべきですか?

ありがとう!

4

1 に答える 1

2

あなたはすでにそれについて言及しています:分離が解決策かもしれません。通常、データベースには変更されていて適切にクリーンアップされていないものがあると思います(または、適切にモックされていません)。

この場合、システムのワークロードが非常に高いため、遅延したジョブが十分な速度で処理されていないことをお勧めします。課題は、テストする必要があるすべての非同期タスクにあります。システムに遅延ジョブを実行させてはいけませんが、呼び出しをモックして、遅延ジョブが受信されたことを確認してください。

残念ながら、例がないので、不足しているモックを指摘することはほとんどできません。ただし、delay_jobs などへのすべての呼び出しが正しいデータを受け取ることを確認してください。ただし、実際にそれらのジョブを作成して実行しないでください。仕様も高速になります。テスト対象の関数を分離し、外部依存関係を呼び出さないようにしてください。

于 2012-05-20T09:17:37.587 に答える