Feature: 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: """ruby 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 """ Scenario: Unused HTTP interactions are allowed by default Given a file named "allowed_by_default.rb" with: """ruby require 'vcr_config' VCR.use_cassette("example") do # no requests end """ When I run `ruby allowed_by_default.rb` Then it should pass Scenario: Error raised if option is false and there are unused interactions Given a file named "disallowed_with_no_requests.rb" with: """ruby 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"] """ Scenario: No error raised if option is false and all interactions are used Given a file named "disallowed_with_all_requests.rb" with: """ruby 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