##環境
Ruby 3.0.2
Rails 6.1.4.1
##モックを使ったテスト
spec.rb
describe 'XXXXX:XXXX' do
#モックを作成
let(:slack_client_mock) { double('slack client mock') }
subject(:task) { Rake.application['XXXXX:XXXX'] }
before do
#chat_postMessageメソッドが呼ばれたらモックを返すように実装を書き換える
allow(::Slack::Web::Client).to receive(:new).and_return(slack_client_mock)
allow(slack_client_mock).to receive(:chat_postMessage).and_return(true)
end
it 'モックのテスト' do
expect(slack_client_mock.chat_postMessage).to eq(true)
subject
end
end
##ポイント
-
allow(モック).to receive(:メソッド名).and_return(hogehoge)
モックがメソッドを実行したときに何が返るかをand_return
で設定 -
モックの設定はbeforeの中に書いたほうがテストの見通しがよくなる
##参考