在我的黄瓜支持目录vcr.rb我有以下几点:红宝石VCR宝石一直记录相同的请求
require 'vcr'
VCR.configure do |c|
c.cassette_library_dir = 'fixtures/vcr_cassettes'
c.hook_into :webmock
c.ignore_localhost = true
c.default_cassette_options = { record: :new_episodes }
end
我地理编码的城市名,这使得在谷歌地图API调用。我试图记录和存根这些请求,但它一直记录相同的请求到相同YML文件:
- request:
method: get
uri: http://maps.googleapis.com/maps/api/geocode/json?address=Miami,%20FL&language=en&sensor=false
body:
encoding: US-ASCII
string: ''
headers:
Accept-Encoding:
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
Accept:
- ! '*/*'
User-Agent:
- Ruby
# response...
- request:
method: get
uri: http://maps.googleapis.com/maps/api/geocode/json?address=Miami,%20FL&language=en&sensor=false
body:
encoding: US-ASCII
string: ''
headers:
Accept-Encoding:
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
Accept:
- ! '*/*'
User-Agent:
- Ruby
这是相同的URL,非常相同的请求,不应VCR存根要求?每次我尝试搜索同一个城市时,如何防止我的规范击中API?
@Erik J - 如果有*任何人*你应该听[VCR](https://github.com/myronmarston/vcr/),那就是有人叫做Myron; – Gareth 2012-07-12 01:43:04
谢谢,Myron,我希望你能通过;)我刚刚意识到我的回复标题包括“过期: - 周五,2012年7月13日18:31:50 GMT”,这是请求日期后24小时。录像机是否注意到这一点并尝试再次提出请求?如果是这样,有没有办法禁用? – 2012-07-12 18:49:33
不,录像机根本不使用它。有一个[re_record_interval](https://www.relishapp.com/myronmarston/vcr/v/2-2-3/docs/cassettes/automatic-re-recording)选项,但没有看任何标题(它只是使用配置的时间间隔),它不会产生你所看到的重复的交互;它会取代旧的HTTP交互,而不是仅仅添加一个新的交互。 – 2012-07-12 23:22:10