RSpecでWebアクセスをするクラスをテストする際にモックの機能を提供してくれるので有名なのが『webmock』です。ただアクセスするWebサイトの数が増えると、Webmock用のデータ作成や管理が面倒になってしまいがちです。そんな時に助けてくれるのが、『VCR』です。
🏈 VCRとは?
VCRとはテストで使う『HTTP通信』を1回目に記録しておいて、2回目以降のテストでの実行時間を短縮し、効率的なテストを支援してくれるGemです。Webmockと組み合わせて使うことができます。
🐡 Gemのインストール
Gemfile
に以下を追加して、コンソールでbundle
を実行してください。
group :test do |
🍣 設定
spec/spec_helper.rb
内に次の設定を追加。
VCR.configure do |c| |
😀 使い方
specファイル内のhttpで通信をしている部分で以下のようにして使います。
ここではサンプルとして、spec/model/your_model_spec.rb
での設定を表示します。
describe YourModel do |
これを実行すると、spec/vcr/model/api_response.yml
が作成されます。
--- |
これで2回目以降のアクセスではWebアクセスする代わりに、spec/vcr/model/api_response.yml
を使ってテストしてくれます。
🐰 公式サイト
最後に公式のGitHubの紹介です。
🐝 参考リンク
webmockとvcrを利用してHTTPのmockを作成する | Act as Professional - hiroki.jp
How To Use The VCR Gem With Rails And Rspec