読者です 読者をやめる 読者になる 読者になる

元フリーエンジニアライフ

Ruby on Rails とか MovableType とかAWSやってるフリーランスウェブエンジニアの記録でした。現在は法人成りしてIT社長。

ActiveJob エンキューされることをテスト

test用のアダプタがあるのでそれを使うとActiveJob::Base.queue_adapter.enqueued_jobsでキューイングされたジョブを取得できるっぽい。

rails/test_adapter.rb at master · rails/rails · GitHub

で、それを利用して特定のジョブクラスが引数付きでエンキューされたることをわかりやすく書けるgemがあるみたい。

github.com

    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