hook_into
The hook_into
configuration option determines how VCR hooks into the HTTP requests to record and replay them. There are currently 4 valid options which support many different HTTP libraries:
There are some addiitonal trade offs to consider when deciding which option to use:
Regardless of which library you use, VCR takes care of all of the configuration for you. You should not need to interact directly with WebMock or the stubbing facilities of Typhoeus, Excon or Faraday. If/when you decide to change stubbing libraries, you can change the hook_into
configuration option and it'll work with no other changes required.
Record and replay a request using each supported hook_into/http library combination
Given a file named "hook_into_http_lib_combo.rb" with:
When I run ruby hook_into_http_lib_combo.rb 'Hello World'
Then the output should contain each of the following:
| The response for request 1 was: Hello World | | The response for request 2 was: Hello World |
And the file "vcr_cassettes/example.yml" should contain "Hello World"
When I run ruby hook_into_http_lib_combo.rb 'Goodbye World'
Then the output should contain each of the following:
| The response for request 1 was: Goodbye World | | The response for request 2 was: Hello World |
And the file "vcr_cassettes/example.yml" should contain "Hello World".
Examples
c.hook_into :webmock
net/http
c.hook_into :webmock
httpclient
c.hook_into :webmock
curb
c.hook_into :webmock
patron
c.hook_into :webmock
em-http-request
c.hook_into :webmock
typhoeus
c.hook_into :webmock
excon
c.hook_into :typhoeus
typhoeus
c.hook_into :excon
excon
c.hook_into :faraday
faraday (w/ net_http)
c.hook_into :faraday
faraday (w/ typhoeus)
Use Typhoeus, Excon and Faraday in combination with WebMock
Given a file named "hook_into_multiple.rb" with:
When I run ruby hook_into_multiple.rb 'Hello'
Then the output should contain each of the following:
| Net::HTTP 1: Hello net_http | | Typhoeus 1: Hello typhoeus | | Excon 1: Hello excon | | Faraday 1: Hello faraday | | Net::HTTP 2: Hello net_http | | Typhoeus 2: Hello typhoeus | | Excon 2: Hello excon | | Faraday 2: Hello faraday |
And the cassette "vcr_cassettes/example.yml" should have the following response bodies:
| Hello net_http | | Hello typhoeus | | Hello excon | | Hello faraday |
When I run ruby hook_into_multiple.rb 'Goodbye'
Then the output should contain each of the following:
| Net::HTTP 1: Goodbye net_http | | Typhoeus 1: Goodbye typhoeus | | Excon 1: Goodbye excon | | Faraday 1: Goodbye faraday | | Net::HTTP 2: Hello net_http | | Typhoeus 2: Hello typhoeus | | Excon 2: Hello excon | | Faraday 2: Hello faraday |
Examples
:webmock
net_http
:webmock
typhoeus
require 'typhoeus/adapters/faraday'
Last updated