webmock + rspec + vcr で TimestampとSignatureを含むurlでエラーでたけどなんとか回避
rspecで初めてテスト書いてて、グーグル先生によれば
web api使うならwebmockとvcr使ったら簡単とのことだったので使ったらエラーが・・・
VCR::Errors::UnhandledHTTPRequestError - :match_requests_on => [:method, #<struct VCR::RequestMatcherRegistry::URIWithoutParamsMatcher params_to_ignore=["timestamp", "Signature"]>]
ignoreってとこかと思いまたまたグーグル先生にお伺いしたらお答えを頂きました
include_http_adapter_for("net/http") require 'vcr' VCR.configure do |c| c.hook_into :webmock c.cassette_library_dir = 'cassettes' c.default_cassette_options = { :match_requests_on => [:method, VCR.request_matchers.uri_without_param(:timestamp)] } end def search_uri(q) "http://example.com/search?q=#{q}×tamp=#{Time.now.to_i}" end VCR.use_cassette('example') do puts "Response for bar: " + response_body_for(:get, search_uri("bar")) end VCR.use_cassette('example') do puts "Response for foo: " + response_body_for(:get, search_uri("foo")) end
なんか全然進んでる感じしないけど、テストちゃんと書けたらgemに上げたい
参考
URI without param(s) - Request matching - Vcr - VCR - Relish