vcr 2.3.0 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +5 -2
- data/.travis.yml +3 -1
- data/Appraisals +0 -4
- data/CHANGELOG.md +90 -54
- data/Gemfile +6 -6
- data/{gemfiles/typhoeus-new.gemfile.lock → Gemfile.lock} +34 -37
- data/LICENSE +1 -1
- data/README.md +14 -7
- data/Rakefile +8 -6
- data/cucumber.yml +10 -7
- data/features/.nav +3 -0
- data/features/configuration/preserve_exact_body_bytes.feature +2 -2
- data/features/configuration/query_parser.feature +84 -0
- data/features/configuration/uri_parser.feature +1 -1
- data/features/hooks/around_http_request.feature +1 -1
- data/features/request_matching/README.md +2 -0
- data/features/request_matching/query.feature +97 -0
- data/gemfiles/{typhoeus-old.gemfile → typhoeus_old.gemfile} +1 -3
- data/gemfiles/{typhoeus-old.gemfile.lock → typhoeus_old.gemfile.lock} +25 -17
- data/lib/vcr.rb +5 -1
- data/lib/vcr/configuration.rb +20 -0
- data/lib/vcr/deprecations.rb +62 -1
- data/lib/vcr/errors.rb +9 -9
- data/lib/vcr/library_hooks/fakeweb.rb +1 -0
- data/lib/vcr/library_hooks/typhoeus.rb +1 -0
- data/lib/vcr/library_hooks/webmock.rb +1 -1
- data/lib/vcr/request_matcher_registry.rb +8 -1
- data/lib/vcr/structs.rb +2 -2
- data/lib/vcr/test_frameworks/rspec.rb +0 -56
- data/lib/vcr/version.rb +1 -1
- data/script/ci.sh +2 -2
- data/spec/monkey_patches.rb +1 -1
- data/spec/spec_helper.rb +12 -13
- data/spec/support/http_library_adapters.rb +9 -1
- data/spec/vcr/deprecations_spec.rb +11 -9
- data/spec/vcr/library_hooks/fakeweb_spec.rb +5 -0
- data/spec/vcr/library_hooks/typhoeus_spec.rb +55 -0
- data/spec/vcr/request_matcher_registry_spec.rb +39 -0
- data/vcr.gemspec +4 -3
- metadata +79 -85
- data/gemfiles/typhoeus-new.gemfile +0 -18
@@ -14,6 +14,8 @@ Specify an array of attributes to match on. Supported attributes are:
|
|
14
14
|
- `:path` - The path of the URI. You can use this (alone, or in combination
|
15
15
|
with `:host`) as an alternative to `:uri` to cause VCR to match using a regex
|
16
16
|
that matches the path.
|
17
|
+
- `:query` - The query string values of the URI. The query string ordering does
|
18
|
+
not affect matching results (it's order-agnostic).
|
17
19
|
- `:body` - The body of the request.
|
18
20
|
- `:headers` - The request headers.
|
19
21
|
|
@@ -0,0 +1,97 @@
|
|
1
|
+
Feature: Matching on Query string
|
2
|
+
|
3
|
+
Use the `:query` request matcher to match requests on the query string
|
4
|
+
portion of the request URI.
|
5
|
+
|
6
|
+
You can use this (alone, or in combination with others) as an
|
7
|
+
alternative to `:uri` so that non-deterministic portions of the URI
|
8
|
+
are not considered as part of the request matching.
|
9
|
+
|
10
|
+
Background:
|
11
|
+
Given a previously recorded cassette file "cassettes/example.yml" with:
|
12
|
+
"""
|
13
|
+
---
|
14
|
+
http_interactions:
|
15
|
+
- request:
|
16
|
+
method: post
|
17
|
+
uri: http://host1.com/query?date=2011-09-01
|
18
|
+
body:
|
19
|
+
encoding: UTF-8
|
20
|
+
string: ""
|
21
|
+
headers: {}
|
22
|
+
response:
|
23
|
+
status:
|
24
|
+
code: 200
|
25
|
+
message: OK
|
26
|
+
headers:
|
27
|
+
Content-Length:
|
28
|
+
- "19"
|
29
|
+
body:
|
30
|
+
encoding: UTF-8
|
31
|
+
string: 2011-09-01 response
|
32
|
+
http_version: "1.1"
|
33
|
+
recorded_at: Tue, 01 Nov 2011 04:58:44 GMT
|
34
|
+
- request:
|
35
|
+
method: post
|
36
|
+
uri: http://host1.com/query?date=2011-09-02
|
37
|
+
body:
|
38
|
+
encoding: UTF-8
|
39
|
+
string: ""
|
40
|
+
headers: {}
|
41
|
+
response:
|
42
|
+
status:
|
43
|
+
code: 200
|
44
|
+
message: OK
|
45
|
+
headers:
|
46
|
+
Content-Length:
|
47
|
+
- "19"
|
48
|
+
body:
|
49
|
+
encoding: UTF-8
|
50
|
+
string: 2011-09-02 response
|
51
|
+
http_version: "1.1"
|
52
|
+
recorded_at: Tue, 01 Nov 2011 04:58:44 GMT
|
53
|
+
recorded_with: VCR 2.0.0
|
54
|
+
"""
|
55
|
+
|
56
|
+
Scenario Outline: Replay interaction that matches the query string
|
57
|
+
And a file named "query_matching.rb" with:
|
58
|
+
"""ruby
|
59
|
+
include_http_adapter_for("<http_lib>")
|
60
|
+
|
61
|
+
require 'vcr'
|
62
|
+
|
63
|
+
VCR.configure do |c|
|
64
|
+
<configuration>
|
65
|
+
c.default_cassette_options = { :match_requests_on => [:query] }
|
66
|
+
c.cassette_library_dir = 'cassettes'
|
67
|
+
end
|
68
|
+
|
69
|
+
VCR.use_cassette('example', :match_requests_on => [:query]) do
|
70
|
+
puts "Response for 2011-09-01 /query: " + response_body_for(:get, "http://example.com/query?date=2011-09-01")
|
71
|
+
end
|
72
|
+
|
73
|
+
VCR.use_cassette('example', :match_requests_on => [:query]) do
|
74
|
+
puts "Response for 2011-09-02 /query: " + response_body_for(:get, "http://example.com/query?date=2011-09-02")
|
75
|
+
end
|
76
|
+
"""
|
77
|
+
When I run `ruby query_matching.rb`
|
78
|
+
Then it should pass with:
|
79
|
+
"""
|
80
|
+
Response for 2011-09-01 /query: 2011-09-01 response
|
81
|
+
Response for 2011-09-02 /query: 2011-09-02 response
|
82
|
+
"""
|
83
|
+
|
84
|
+
Examples:
|
85
|
+
| configuration | http_lib |
|
86
|
+
| c.hook_into :fakeweb | net/http |
|
87
|
+
| c.hook_into :webmock | net/http |
|
88
|
+
| c.hook_into :webmock | httpclient |
|
89
|
+
| c.hook_into :webmock | curb |
|
90
|
+
| c.hook_into :webmock | patron |
|
91
|
+
| c.hook_into :webmock | em-http-request |
|
92
|
+
| c.hook_into :webmock | typhoeus |
|
93
|
+
| c.hook_into :typhoeus | typhoeus |
|
94
|
+
| c.hook_into :excon | excon |
|
95
|
+
| c.hook_into :faraday | faraday (w/ net_http) |
|
96
|
+
| c.hook_into :faraday | faraday (w/ typhoeus) |
|
97
|
+
|
@@ -8,10 +8,8 @@ gem "yard"
|
|
8
8
|
gem "relish", "~> 0.6"
|
9
9
|
gem "fuubar"
|
10
10
|
gem "fuubar-cucumber"
|
11
|
-
gem "redcarpet", "~> 1.17.2"
|
11
|
+
gem "redcarpet", "~> 1.17.2", :platforms=>:ruby
|
12
12
|
gem "github-markup"
|
13
|
-
gem "ruby-debug", :platforms=>[:mri_18, :jruby]
|
14
|
-
gem "debugger", :platforms=>:mri_19
|
15
13
|
gem "typhoeus", "~> 0.4.2"
|
16
14
|
gem "webmock", "1.8.11"
|
17
15
|
|
@@ -1,13 +1,13 @@
|
|
1
1
|
PATH
|
2
|
-
remote: /Users/
|
2
|
+
remote: /Users/hungerandthirst/Code/Ruby/vcr
|
3
3
|
specs:
|
4
|
-
vcr (2.
|
4
|
+
vcr (2.3.0)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: http://rubygems.org/
|
8
8
|
specs:
|
9
9
|
addressable (2.3.2)
|
10
|
-
appraisal (0.
|
10
|
+
appraisal (0.5.1)
|
11
11
|
bundler
|
12
12
|
rake
|
13
13
|
archive-tar-minitar (0.5.2)
|
@@ -19,6 +19,7 @@ GEM
|
|
19
19
|
builder (3.1.4)
|
20
20
|
childprocess (0.3.6)
|
21
21
|
ffi (~> 1.0, >= 1.0.6)
|
22
|
+
coderay (1.0.8)
|
22
23
|
columnize (0.3.6)
|
23
24
|
cookiejar (0.3.0)
|
24
25
|
crack (0.3.1)
|
@@ -28,14 +29,14 @@ GEM
|
|
28
29
|
gherkin (~> 2.9.0)
|
29
30
|
json (>= 1.4.6)
|
30
31
|
term-ansicolor (>= 1.0.6)
|
31
|
-
curb (0.8.
|
32
|
-
debugger (1.2.
|
32
|
+
curb (0.8.3)
|
33
|
+
debugger (1.2.2)
|
33
34
|
columnize (>= 0.3.1)
|
34
35
|
debugger-linecache (~> 1.1.1)
|
35
|
-
debugger-ruby_core_source (~> 1.1.
|
36
|
+
debugger-ruby_core_source (~> 1.1.5)
|
36
37
|
debugger-linecache (1.1.2)
|
37
38
|
debugger-ruby_core_source (>= 1.1.1)
|
38
|
-
debugger-ruby_core_source (1.1.
|
39
|
+
debugger-ruby_core_source (1.1.5)
|
39
40
|
diff-lcs (1.1.3)
|
40
41
|
em-http-request (1.0.3)
|
41
42
|
addressable (>= 2.2.3)
|
@@ -46,11 +47,11 @@ GEM
|
|
46
47
|
em-socksify (0.2.1)
|
47
48
|
eventmachine (>= 1.0.0.beta.4)
|
48
49
|
eventmachine (1.0.0)
|
49
|
-
excon (0.16.
|
50
|
+
excon (0.16.10)
|
50
51
|
fakeweb (1.3.0)
|
51
52
|
faraday (0.8.4)
|
52
53
|
multipart-post (~> 1.1)
|
53
|
-
ffi (1.
|
54
|
+
ffi (1.2.0)
|
54
55
|
fuubar (1.0.0)
|
55
56
|
rspec (~> 2.0)
|
56
57
|
rspec-instafail (~> 0.2.0)
|
@@ -66,14 +67,19 @@ GEM
|
|
66
67
|
json (1.6.7)
|
67
68
|
linecache (0.46)
|
68
69
|
rbx-require-relative (> 0.0.4)
|
70
|
+
method_source (0.8.1)
|
69
71
|
mime-types (1.19)
|
70
72
|
multi_json (1.0.4)
|
71
73
|
multipart-post (1.1.5)
|
72
74
|
patron (0.4.18)
|
75
|
+
pry (0.9.10)
|
76
|
+
coderay (~> 1.0.5)
|
77
|
+
method_source (~> 0.8)
|
78
|
+
slop (~> 3.3.1)
|
73
79
|
rack (1.3.6)
|
74
80
|
rack-protection (1.2.0)
|
75
81
|
rack
|
76
|
-
rake (0.9.
|
82
|
+
rake (0.9.5)
|
77
83
|
rbx-require-relative (0.0.9)
|
78
84
|
redcarpet (1.17.2)
|
79
85
|
redis (2.2.2)
|
@@ -83,15 +89,15 @@ GEM
|
|
83
89
|
rest-client (>= 1.6.1)
|
84
90
|
rest-client (1.6.7)
|
85
91
|
mime-types (>= 1.16)
|
86
|
-
rspec (2.
|
87
|
-
rspec-core (~> 2.
|
88
|
-
rspec-expectations (~> 2.
|
89
|
-
rspec-mocks (~> 2.
|
90
|
-
rspec-core (2.
|
91
|
-
rspec-expectations (2.
|
92
|
+
rspec (2.12.0)
|
93
|
+
rspec-core (~> 2.12.0)
|
94
|
+
rspec-expectations (~> 2.12.0)
|
95
|
+
rspec-mocks (~> 2.12.0)
|
96
|
+
rspec-core (2.12.0)
|
97
|
+
rspec-expectations (2.12.0)
|
92
98
|
diff-lcs (~> 1.1.3)
|
93
99
|
rspec-instafail (0.2.4)
|
94
|
-
rspec-mocks (2.
|
100
|
+
rspec-mocks (2.12.0)
|
95
101
|
ruby-debug (0.10.4)
|
96
102
|
columnize (>= 0.1)
|
97
103
|
ruby-debug-base (~> 0.10.4.0)
|
@@ -107,6 +113,7 @@ GEM
|
|
107
113
|
rack (~> 1.3, >= 1.3.6)
|
108
114
|
rack-protection (~> 1.2)
|
109
115
|
tilt (~> 1.3, >= 1.3.3)
|
116
|
+
slop (3.3.3)
|
110
117
|
term-ansicolor (1.0.7)
|
111
118
|
tilt (1.3.3)
|
112
119
|
timecop (0.3.5)
|
@@ -141,6 +148,7 @@ DEPENDENCIES
|
|
141
148
|
json (~> 1.6.5)
|
142
149
|
multi_json (~> 1.0.3)
|
143
150
|
patron (~> 0.4.15)
|
151
|
+
pry
|
144
152
|
rack (~> 1.3.6)
|
145
153
|
rake (~> 0.9.2)
|
146
154
|
redcarpet (~> 1.17.2)
|
data/lib/vcr.rb
CHANGED
@@ -24,7 +24,11 @@ module VCR
|
|
24
24
|
|
25
25
|
autoload :CucumberTags, 'vcr/test_frameworks/cucumber'
|
26
26
|
autoload :InternetConnection, 'vcr/util/internet_connection'
|
27
|
-
|
27
|
+
|
28
|
+
module RSpec
|
29
|
+
autoload :Metadata, 'vcr/test_frameworks/rspec'
|
30
|
+
autoload :Macros, 'vcr/deprecations'
|
31
|
+
end
|
28
32
|
|
29
33
|
module Middleware
|
30
34
|
autoload :Faraday, 'vcr/middleware/faraday'
|
data/lib/vcr/configuration.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'vcr/util/hooks'
|
2
2
|
require 'uri'
|
3
|
+
require 'cgi'
|
3
4
|
|
4
5
|
module VCR
|
5
6
|
# Stores the VCR configuration.
|
@@ -124,6 +125,24 @@ module VCR
|
|
124
125
|
!!@allow_http_connections_when_no_cassette
|
125
126
|
end
|
126
127
|
|
128
|
+
# Sets a parser for VCR to use when parsing query strings for request
|
129
|
+
# comparisons. The new parser must implement a method `call` that returns
|
130
|
+
# an object which is both equalivant and consistent when given an HTTP
|
131
|
+
# query string of possibly differing value ordering.
|
132
|
+
#
|
133
|
+
# * `#== # => Boolean`
|
134
|
+
#
|
135
|
+
# The `#==` method must return true if both objects represent the
|
136
|
+
# same query string.
|
137
|
+
#
|
138
|
+
# This defaults to `CGI.parse` from the ruby standard library.
|
139
|
+
#
|
140
|
+
# @overload query_parser
|
141
|
+
# @return [#call] the current query string parser object
|
142
|
+
# @overload query_parser=
|
143
|
+
# @param value [#call] sets the query_parser
|
144
|
+
attr_accessor :query_parser
|
145
|
+
|
127
146
|
# Sets a parser for VCR to use when parsing URIs. The new parser
|
128
147
|
# must implement a method `parse` that returns an instance of the
|
129
148
|
# URI object. This URI object must implement the following
|
@@ -452,6 +471,7 @@ module VCR
|
|
452
471
|
}
|
453
472
|
|
454
473
|
self.uri_parser = URI
|
474
|
+
self.query_parser = CGI.method(:parse)
|
455
475
|
self.debug_logger = NullDebugLogger
|
456
476
|
|
457
477
|
register_built_in_hooks
|
data/lib/vcr/deprecations.rb
CHANGED
@@ -24,7 +24,7 @@ module VCR
|
|
24
24
|
# @deprecated Use #hook_into instead.
|
25
25
|
# @see #hook_into
|
26
26
|
def stub_with(*adapters)
|
27
|
-
warn "WARNING: `VCR.
|
27
|
+
warn "WARNING: `VCR.configure { |c| c.stub_with ... }` is deprecated. Use `VCR.configure { |c| c.hook_into ... }` instead."
|
28
28
|
hook_into(*adapters)
|
29
29
|
end
|
30
30
|
end
|
@@ -43,5 +43,66 @@ module VCR
|
|
43
43
|
end
|
44
44
|
end
|
45
45
|
end
|
46
|
+
|
47
|
+
module RSpec
|
48
|
+
# Contains macro methods to assist with VCR usage. These methods are
|
49
|
+
# intended to be used directly in an RSpec example group. To make these
|
50
|
+
# available in your RSpec example groups, extend the module in an individual
|
51
|
+
# example group, or configure RSpec to extend the module in all example groups.
|
52
|
+
#
|
53
|
+
# @example
|
54
|
+
# RSpec.configure do |c|
|
55
|
+
# c.extend VCR::RSpec::Macros
|
56
|
+
# end
|
57
|
+
#
|
58
|
+
module Macros
|
59
|
+
def self.extended(base)
|
60
|
+
Kernel.warn "WARNING: VCR::RSpec::Macros is deprecated. Use RSpec metadata options instead `:vcr => vcr_options`"
|
61
|
+
end
|
62
|
+
|
63
|
+
# Sets up a `before` and `after` hook that will insert and eject a
|
64
|
+
# cassette, respectively.
|
65
|
+
#
|
66
|
+
# @example
|
67
|
+
# describe "Some API Client" do
|
68
|
+
# use_vcr_cassette "some_api", :record => :new_episodes
|
69
|
+
# end
|
70
|
+
#
|
71
|
+
# @param [(optional) String] name the cassette name; it will be inferred by the example
|
72
|
+
# group descriptions if not given.
|
73
|
+
# @param [(optional) Hash] options the cassette options
|
74
|
+
# @deprecated Use RSpec metadata options
|
75
|
+
def use_vcr_cassette(*args)
|
76
|
+
options = args.last.is_a?(Hash) ? args.pop : {}
|
77
|
+
name = args.first || infer_cassette_name
|
78
|
+
|
79
|
+
before(:each) do
|
80
|
+
VCR.insert_cassette(name, options)
|
81
|
+
end
|
82
|
+
|
83
|
+
after(:each) do
|
84
|
+
VCR.eject_cassette
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
private
|
89
|
+
|
90
|
+
def infer_cassette_name
|
91
|
+
# RSpec 1 exposes #description_parts; use that if its available
|
92
|
+
return description_parts.join("/") if respond_to?(:description_parts)
|
93
|
+
|
94
|
+
# Otherwise use RSpec 2 metadata...
|
95
|
+
group_descriptions = []
|
96
|
+
klass = self
|
97
|
+
|
98
|
+
while klass.respond_to?(:metadata) && klass.metadata
|
99
|
+
group_descriptions << klass.metadata[:example_group][:description]
|
100
|
+
klass = klass.superclass
|
101
|
+
end
|
102
|
+
|
103
|
+
group_descriptions.compact.reverse.join('/')
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
46
107
|
end
|
47
108
|
|
data/lib/vcr/errors.rb
CHANGED
@@ -132,41 +132,41 @@ module VCR
|
|
132
132
|
:use_new_episodes => [
|
133
133
|
["You can use the :new_episodes record mode to allow VCR to",
|
134
134
|
"record this new request to the existing cassette"],
|
135
|
-
"https://www.relishapp.com/
|
135
|
+
"https://www.relishapp.com/vcr/vcr/v/%s/docs/record-modes/new-episodes"
|
136
136
|
],
|
137
137
|
|
138
138
|
:delete_cassette_for_once => [
|
139
139
|
["The current record mode (:once) does not allow new requests to be recorded",
|
140
140
|
"to a previously recorded cassette. You can delete the cassette file and re-run",
|
141
141
|
"your tests to allow the cassette to be recorded with this request"],
|
142
|
-
"https://www.relishapp.com/
|
142
|
+
"https://www.relishapp.com/vcr/vcr/v/%s/docs/record-modes/once"
|
143
143
|
],
|
144
144
|
|
145
145
|
:deal_with_none => [
|
146
146
|
["The current record mode (:none) does not allow requests to be recorded. You",
|
147
147
|
"can temporarily change the record mode to :once, delete the cassette file ",
|
148
148
|
"and re-run your tests to allow the cassette to be recorded with this request"],
|
149
|
-
"https://www.relishapp.com/
|
149
|
+
"https://www.relishapp.com/vcr/vcr/v/%s/docs/record-modes/none"
|
150
150
|
],
|
151
151
|
|
152
152
|
:use_a_cassette => [
|
153
153
|
["If you want VCR to record this request and play it back during future test",
|
154
154
|
"runs, you should wrap your test (or this portion of your test) in a",
|
155
155
|
"`VCR.use_cassette` block"],
|
156
|
-
"https://www.relishapp.com/
|
156
|
+
"https://www.relishapp.com/vcr/vcr/v/%s/docs/getting-started"
|
157
157
|
],
|
158
158
|
|
159
159
|
:allow_http_connections_when_no_cassette => [
|
160
160
|
["If you only want VCR to handle requests made while a cassette is in use,",
|
161
161
|
"configure `allow_http_connections_when_no_cassette = true`. VCR will",
|
162
162
|
"ignore this request since it is made when there is no cassette"],
|
163
|
-
"https://www.relishapp.com/
|
163
|
+
"https://www.relishapp.com/vcr/vcr/v/%s/docs/configuration/allow-http-connections-when-no-cassette"
|
164
164
|
],
|
165
165
|
|
166
166
|
:ignore_request => [
|
167
167
|
["If you want VCR to ignore this request (and others like it), you can",
|
168
168
|
"set an `ignore_request` callback"],
|
169
|
-
"https://www.relishapp.com/
|
169
|
+
"https://www.relishapp.com/vcr/vcr/v/%s/docs/configuration/ignore-request"
|
170
170
|
],
|
171
171
|
|
172
172
|
:allow_playback_repeats => [
|
@@ -174,7 +174,7 @@ module VCR
|
|
174
174
|
"but it has already been played back. If you wish to allow a single HTTP",
|
175
175
|
"interaction to be played back multiple times, set the `:allow_playback_repeats`",
|
176
176
|
"cassette option"],
|
177
|
-
"https://www.relishapp.com/
|
177
|
+
"https://www.relishapp.com/vcr/vcr/v/%s/docs/request-matching/playback-repeats"
|
178
178
|
],
|
179
179
|
|
180
180
|
:match_requests_on => [
|
@@ -182,14 +182,14 @@ module VCR
|
|
182
182
|
"played back. If your request is non-deterministic, you may need to",
|
183
183
|
"change your :match_requests_on cassette option to be more lenient",
|
184
184
|
"or use a custom request matcher to allow it to match"],
|
185
|
-
"https://www.relishapp.com/
|
185
|
+
"https://www.relishapp.com/vcr/vcr/v/%s/docs/request-matching"
|
186
186
|
],
|
187
187
|
|
188
188
|
:try_debug_logger => [
|
189
189
|
["If you're surprised VCR is raising this error",
|
190
190
|
"and want insight about how VCR attempted to handle the request,",
|
191
191
|
"you can use the debug_logger configuration option to log more details"],
|
192
|
-
"https://www.relishapp.com/
|
192
|
+
"https://www.relishapp.com/vcr/vcr/v/%s/docs/configuration/debug-logging"
|
193
193
|
]
|
194
194
|
}
|
195
195
|
|
@@ -191,5 +191,6 @@ VCR.configuration.after_library_hooks_loaded do
|
|
191
191
|
if defined?(WebMock)
|
192
192
|
raise ArgumentError.new("You have configured VCR to hook into both :fakeweb and :webmock. You cannot use both.")
|
193
193
|
end
|
194
|
+
::Kernel.warn "WARNING: VCR's FakeWeb integration is deprecated and will be removed in VCR 3.0."
|
194
195
|
end
|
195
196
|
|