###環境
- ruby 2.1.3p242 (2014-09-19 revision 47630) [x86_64-darwin13.0]
- rspec 3.1.7
- vcr 2.9.3
VCRのスタンダードな使い方は、
example_spec.rb
subject do
VCR.use_cassette('weather_forcast') do
# API call
end
end
のように、テストコードにVCR.use_cassetteを明記するというものです。
ですが、将来的にVCRを使わないとなった場合、テストコードを修正しなければいけませんね。これは未来への負債となってしまいます。
そこで、VCRに依存しないテストコードを書くための仕掛けを考えました。
spec/spec_helper.rb
VCR.configure do | c |
c.around_http_request do | request |
VCR.use_cassette(request.parsed_uri.path, &request)
end
end
リクエストURLからカセットの配置場所とファイル名を決定しちゃおうぜ!大作戦です。
これを仕込んでおくとテストコードにVCR~を一切記述する必要がなくなります。
万が一、GemfileからVCRが消えてもテストコードの修正は不要ですね。