如何在 VCR 中匹配动态变化的 url
How can i match a dynamically changing url in VCR
在我的 Ruby Rails 应用程序中,有 2 个本地主机服务器 运行。我正在为第一台服务器编写测试用例,所以我必须模拟第二台服务器。
为此,我使用 VCR 记录我从第二台服务器获得的响应,并在 运行 第一台服务器上进行测试时播放录制的磁带。
我被困在第一台服务器向第二台服务器发出请求的部分(URL 中的 session_id 每次都发生变化)和我希望每次发出请求时响应都相同。
使用 VCR,您可以使用 match_requests_on
盒式选项或完全自定义的匹配器 - https://relishapp.com/vcr/vcr/v/3-0-3/docs/request-matching[= 根据您希望的任何参数(方法、主机、路径等)匹配请求12=]
我通过忽略参数完成了这项工作。所以对你来说,这样的事情可能会奏效:
VCR.use_cassette('name_of_your_cassette', match_requests_on: [:method, VCR.request_matchers.uri_without_params('session_id')]) do
# here is your http query
end
在我的例子中是 query
发生了变化,所以我在 vcr 请求匹配器中忽略了它。
在我的 Ruby Rails 应用程序中,有 2 个本地主机服务器 运行。我正在为第一台服务器编写测试用例,所以我必须模拟第二台服务器。 为此,我使用 VCR 记录我从第二台服务器获得的响应,并在 运行 第一台服务器上进行测试时播放录制的磁带。
我被困在第一台服务器向第二台服务器发出请求的部分(URL 中的 session_id 每次都发生变化)和我希望每次发出请求时响应都相同。
使用 VCR,您可以使用 match_requests_on
盒式选项或完全自定义的匹配器 - https://relishapp.com/vcr/vcr/v/3-0-3/docs/request-matching[= 根据您希望的任何参数(方法、主机、路径等)匹配请求12=]
我通过忽略参数完成了这项工作。所以对你来说,这样的事情可能会奏效:
VCR.use_cassette('name_of_your_cassette', match_requests_on: [:method, VCR.request_matchers.uri_without_params('session_id')]) do
# here is your http query
end
在我的例子中是 query
发生了变化,所以我在 vcr 请求匹配器中忽略了它。