VCR
v-6.0.0
v-6.0.0
  • Introduction
  • Upgrade
  • Changelog
  • About These Examples
  • License
  • Contributing
  • Cassettes
    • Cassette Format
    • Naming
    • Error for HTTP Request Made When No Cassette Is in Use
    • Dynamic ERB Cassettes
    • Automatic Re-Recording
    • Exclusive Cassette
    • Update Content Length Header
    • Decode Compressed Response
    • Allow Unused HTTP Interactions
    • Freezing Time
  • Record modes
    • Once
    • New Episodes
    • None
    • All
    • Record on Error
  • Configuration
    • Cassette Library Dir
    • Hook Into
    • Default Cassette Options
    • Ignore Request
    • Filter Sensitive Data
    • Allow HTTP Connections When No Cassette
    • Debug Logging
    • Preserve Exact Body Bytes
    • URI Parser
    • Query Parser
  • Hooks
    • Before Record Hook
    • Before Playback Hook
    • Before HTTP Request Hook
    • After HTTP Request Hook
    • Around HTTP Request Hook
  • Request matching
    • Introduction
    • Matching on Method
    • Matching on URI
    • Matching on Host
    • Matching on Path
    • Matching on Query String
    • Matching on Body
    • Matching on Headers
    • Identical Requests Are Replayed in Sequence
    • Register and Use a Custom Matcher
    • URI Without Param(s)
    • Playback Repeats
    • Matching on Body as JSON
  • Test frameworks
    • Usage With Test::Unit
    • Usage With RSpec Metadata
    • Usage With Cucumber
  • Middleware
    • Rack
    • Faraday Middleware
  • HTTP Libraries
    • Net::HTTP
    • EM HTTP Request
Powered by GitBook
On this page
  • Background ()
  • Unused HTTP interactions are allowed by default
  • Error raised if option is false and there are unused interactions
  • No error raised if option is false and all interactions are used
  • Does not silence other errors raised in use_cassette block

Was this helpful?

  1. Cassettes

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, unless there is already an exception unwinding the callstack.

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 :webmock
  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

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.

Does not silence other errors raised in use_cassette block

Given a file named "does_not_silence_other_errors.rb" with:

require 'vcr_config'

VCR.use_cassette("example", :allow_unused_http_interactions => false) do
  raise "boom"
end

When I run ruby does_not_silence_other_errors.rb

Then it should fail with "boom"

And the output should not contain "There are unused HTTP interactions".

PreviousDecode Compressed ResponseNextFreezing Time

Last updated 4 years ago

Was this helpful?