なにこれ?
VCRでRailsの外部API呼び出しを行っているときに、詰まったことと解決方法のメモ
問題
Request specを使ったときにController(やModel)側でAPI callがあったときにエラーが起きる
RSpec.describe "Hoge", type: :request, vcr: true do
describe 'GET /hoge' do
subject do
get '/hoge'
response
end
it { is_expected.to have_http_status 200 }
end
end
この時エンドポイント /hoge
でエラーが起こる
解決方法
VCR.use_cassetteを使ってない場合、APIコール時にexample.descriptionを取りに行き、取れずに失敗している。
応急的には
RSpec.describe "Hoge", type: :request, vcr: true do
describe 'GET /hoge' do
subject do |example|
VCR.use_cassette example.description do
get '/hoge'
end
response
end
it { is_expected.to have_http_status 200 }
end
end
で動いた。
場当たり的ではない対策はちょっと考える。
(VCRのリポジトリ上で既知で無いならPR、既知ならきっと良いやり方があるはず)