ActiveJob エンキューされることをテスト
test用のアダプタがあるのでそれを使うとActiveJob::Base.queue_adapter.enqueued_jobs
でキューイングされたジョブを取得できるっぽい。
rails/test_adapter.rb at master · rails/rails · GitHub
で、それを利用して特定のジョブクラスが引数付きでエンキューされたることをわかりやすく書けるgemがあるみたい。
it 'チャットワークメッセージ送信ジョブ登録' do expect { service.send_to_chatwork rid, body }.to enqueue_a(SendToChatworkJob).with(room_id: rid, body: body) end
追記 2015.4.17
Rails 4.2.1でActiveJobがキューに入れるハッシュに変更があり、deserialize_as
マッチャを使用するようになりました。(rspec-activejob 0.3)
it 'チャットワークメッセージ送信ジョブ登録' do expect { service.send_to_chatwork rid, body }.to enqueue_a(SendToChatworkJob). with(deserialize_as(room_id: rid, body: body)) end