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

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

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

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