To add a collaborator to this project you will need to use the Relish gem to add the collaborator via a terminal command. Soon you'll be able to also add collaborators here!
More about adding a collaboratorexclusive cassette
VCR allows cassettes to be nested. This is particularly useful in
a context like cucumber, where you may be using a cassette for an
entire scenario, and also using a cassette within a particular step
definition.
By default, both the inner and outer cassettes are active. On each
request, VCR will look for a matching HTTP interaction in the inner
cassette, and it will use the outer cassette as a fall back if none
can be found.
If you do not want the HTTP interactions of the outer cassette considered,
you can pass the :exclusive
option, so that the inner cassette is
used exclusively.
- Background
-
- Given
-
a previously recorded cassette file "cassettes/outer.yml" with:
--- http_interactions: - request: method: get uri: http://localhost/outer body: encoding: UTF-8 string: "" headers: {} response: status: code: 200 message: OK headers: Content-Length: - "18" body: encoding: UTF-8 string: Old outer response http_version: "1.1" recorded_at: Tue, 01 Nov 2011 04:58:44 GMT recorded_with: VCR 2.0.0
- And
-
a previously recorded cassette file "cassettes/inner.yml" with:
--- http_interactions: - request: method: get uri: http://localhost/inner body: encoding: UTF-8 string: "" headers: {} response: status: code: 200 message: OK headers: Content-Length: - "18" body: encoding: UTF-8 string: Old inner response http_version: "1.1" recorded_at: Tue, 01 Nov 2011 04:58:44 GMT recorded_with: VCR 2.0.0
- And
-
a file named "setup.rb" with:
include_http_adapter_for("net/http") $server = start_sinatra_app do get('/:path') { "New #{params[:path]} response" } end require 'vcr' VCR.configure do |c| c.hook_into :webmock c.cassette_library_dir = 'cassettes' c.default_cassette_options = { :record => :new_episodes, :match_requests_on => [:method, :host, :path] } end
- Scenarios
-
- Cassettes are not exclusive by default
-
- Given
-
a file named "not_exclusive.rb" with:
require 'setup' VCR.use_cassette('outer') do VCR.use_cassette('inner') do puts response_body_for(:get, "http://localhost:#{$server.port}/outer") puts response_body_for(:get, "http://localhost:#{$server.port}/inner") end end
- When
-
I run
ruby not_exclusive.rb
- Then
-
it should pass with:
Old outer response Old inner response
- Use an exclusive cassette
-
- Given
-
a file named "exclusive.rb" with:
require 'setup' VCR.use_cassette('outer') do VCR.use_cassette('inner', :exclusive => true) do puts response_body_for(:get, "http://localhost:#{$server.port}/outer") puts response_body_for(:get, "http://localhost:#{$server.port}/inner") end end
- When
-
I run
ruby exclusive.rb
- Then
-
it should pass with:
New outer response Old inner response
- And
- the file "cassettes/inner.yml" should contain "New outer response"
Last published over 1 year ago by olleolleolle.