我正在尝试将SEOMOZ API与VCR集成。
由于对SEOMOZ的API请求包含随时间推移而针对同一请求而更改的参数,因此我需要实现自定义匹配器。
以下是我的API调用:
http://lsapi.seomoz.com/linkscape/url-metrics/#{self.url}?Cols=#{cols}&AccessID=#{moz_id}&Expires=#{expires}&Signature=#{url_safe_signature}
我也会拨打其他终端,例如Twitter,Facebook等等。默认匹配器可以很好地完成工作。
如何为SEOMOZ覆盖匹配器行为。此外,在这种情况下,我应该将哪个参数与请求最匹配。
答案 0 :(得分:1)
您需要匹配除签名和过期之外的所有参数。
您可能会考虑的另一个选项(我们在使用带有此类API的VCR时在内部使用它)是将测试时间记录在带有磁带的文件中,并使用Timecop或等效的东西来确保您重新使用每次运行时都在“同一时间”运行录制的测试。
答案 1 :(得分:0)
您可以使用VCR.request_matchers.uri_without_params
自定义匹配器,请参阅https://relishapp.com/vcr/vcr/v/2-5-0/docs/request-matching/uri-without-param-s
你会在你的情况下使用它:
VCR.configure do |c|
# ...
c.default_cassette_options = {
# ...
# the default is: match_requests_on: [:method :uri]
match_requests_on: [:method, VCR.request_matchers.uri_without_params(:Signature, :Expires)]
}
end