LoginSignup
1
2

More than 5 years have passed since last update.

[VCR][RSpec] VCRに依存しないテストコードを書く

Last updated at Posted at 2015-05-21

環境

  • 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が消えてもテストコードの修正は不要ですね。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2