module VCR::RSpec::Macros
Contains macro methods to assist with VCR
usage. These methods are intended to be used directly in an RSpec
example group. To make these available in your RSpec
example groups, extend the module in an individual example group, or configure RSpec
to extend the module in all example groups.
@example
RSpec.configure do |c| c.extend VCR::RSpec::Macros end
Public Instance Methods
use_vcr_cassette(*args)
click to toggle source
Sets up a ‘before` and `after` hook that will insert and eject a cassette, respectively.
@example
describe "Some API Client" do use_vcr_cassette "some_api", :record => :new_episodes end
@param [(optional) String] name the cassette name; it will be inferred by the example
group descriptions if not given.
@param [(optional) Hash] options the cassette options
# File lib/vcr/test_frameworks/rspec.rb, line 28 def use_vcr_cassette(*args) options = args.last.is_a?(Hash) ? args.pop : {} name = args.first || infer_cassette_name before(:each) do VCR.insert_cassette(name, options) end after(:each) do VCR.eject_cassette end end
Private Instance Methods
infer_cassette_name()
click to toggle source
# File lib/vcr/test_frameworks/rspec.rb, line 43 def infer_cassette_name # RSpec 1 exposes #description_parts; use that if its available return description_parts.join("/") if respond_to?(:description_parts) # Otherwise use RSpec 2 metadata... group_descriptions = [] klass = self while klass.respond_to?(:metadata) && klass.metadata group_descriptions << klass.metadata[:example_group][:description] klass = klass.superclass end group_descriptions.compact.reverse.join('/') end