はじめに
RspecでのJobのテスト方法を書いていきます。
やること
今回はユーザー作成した際に、Slack通知がされるJobのテストを実装します。
実装
require "rails_helper"
RSpec.describe SlackNotification::UserCreatedJob do
# テストの対象
describe "#perform" do
# Job作成のコマンドを変数に入れる
subject { SlackNotification::UserCreatedJob.new.perform(user.id) }
# ユーザーを作成する(FactoryBotを使用する)
let(:user) { create(:user) }
#Jobがエンキューされたとき
it "enqueues SlackNotificationJob" do
# SlackNotificationJobの数が1個増えることを期待する
expect { subject }.to change { SlackNotificationJob.jobs.count }.by(1)
end
end
end
説明
今回はJobを実行したときに、1つエンキューしたJobが増えるので、その増えた数でテストをしています。
さいごに
Jobのテストって、何をテストしたら良いのか分かりづらかったです、、