Logo: Relish

  1. Sign in

Project: Vcr 2.2.0

Allow Unused HTTP Interactions

If set to false, this cassette option will cause VCR to raise an error
when a cassette is ejected and there are unused HTTP interactions remaining.

It verifies that all requests included in the cassette were made, and allows
VCR to function a bit like a mock object at the HTTP layer.

The option defaults to true (mostly for backwards compatibility).

Background
Given
a file named "vcr_config.rb" with:
require 'vcr'

VCR.configure do |c|
  c.hook_into :fakeweb
  c.cassette_library_dir = 'cassettes'
end
And
a previously recorded cassette file "cassettes/example.yml" with:
--- 
http_interactions: 
- request: 
    method: get
    uri: http://example.com/foo
    body: 
      encoding: UTF-8
      string: ""
    headers: {}
  response: 
    status: 
      code: 200
      message: OK
    headers: 
      Content-Length: 
      - "5"
    body: 
      encoding: UTF-8
      string: Hello
    http_version: "1.1"
  recorded_at: Tue, 01 Nov 2011 04:58:44 GMT
recorded_with: VCR 2.0.0
Scenarios
Unused HTTP interactions are allowed by default
Given
a file named "allowed_by_default.rb" with:
require 'vcr_config'

VCR.use_cassette("example") do
  # no requests
end
When
I run ruby allowed_by_default.rb
Then
it should pass
Error raised if option is false and there are unused interactions
Given
a file named "disallowed_with_no_requests.rb" with:
require 'vcr_config'

VCR.use_cassette("example", :allow_unused_http_interactions => false) do
  # no requests
end
When
I run ruby disallowed_with_no_requests.rb
Then
it should fail with an error like:
There are unused HTTP interactions left in the cassette:
  - [get http://example.com/foo] => [200 "Hello"]
No error raised if option is false and all interactions are used
Given
a file named "disallowed_with_all_requests.rb" with:
require 'vcr_config'

VCR.use_cassette("example", :allow_unused_http_interactions => false) do
  Net::HTTP.get_response(URI("http://example.com/foo"))
end
When
I run ruby disallowed_with_all_requests.rb
Then
it should pass

Last published over 4 years ago by myronmarston.