タケユー・ウェブ日報

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

ActiveJob::Base#perform のブラックボックステスト

作法として正しいかどうかはわからないですが、queue_adapter = :inlineにしてperform_laterすればすぐ実行されるからブラックボックステストはできそう

require 'rails_helper'

RSpec.describe SendToChatworkJob, :type => :job do
  before :all do
    SendToChatworkJob.queue_adapter = :inline
  end

  describe '#perform' do
    let(:rid) { 1000 }
    let(:body) { 'message' }
    it 'delegates to ChatWork::Message#create' do
      expect(ChatWork::Message).to receive(:create).with(room_id: rid, body: body)
      SendToChatworkJob.perform_later room_id: rid, body: body
    end
  end
end

追記

別に:inlineにしなくてもperform_now使えばよかった

require 'rails_helper'

RSpec.describe SendToChatworkJob, :type => :job do
  describe '#perform' do
    let(:rid) { 1000 }
    let(:body) { 'message' }
    it 'delegates to ChatWork::Message#create' do
      expect(ChatWork::Message).to receive(:create).with(room_id: rid, body: body)
      SendToChatworkJob.perform_now room_id: rid, body: body
    end
  end
end