タケユー・ウェブ日報

Ruby on Rails や Flutter といったWeb・モバイルアプリ技術を武器にお客様のビジネス立ち上げを支援する、タケユー・ウェブ株式会社の技術ブログです。

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