TL;DR
- RSpec で
FooJob.perform_laterが非同期で起こす副作用を確かめたいときは、perform_enqueued_jobsを使う。 perform_enqueued_jobsは RSpec ではなく、Active Job のActiveJob::TestHelperが提供するメソッドである。
内容
あるクラスの処理の中で、FooJob.perform_later によってジョブを非同期に実行することがある。そのままテストを実行すると、RSpec は非同期で実行されたジョブの完了を待たないので、期待した結果が返ってこない。記事には次のように書かれている。
何らかのクラスの処理の中で
FooJob.perform_laterが非同期で起こす副作用を確認したいこともあるかもしれない。
そのまま実行しても非同期で実行されたジョブはRSpecがその処理を待ってくれず、期待した結果が返ってこない。
その時はperform_enqueued_jobsを使うと良い。RSpecではなく、ActiveJob::TestHelperのメソッドである。