我正在使用WebMock和VCR测试Ruby on Rails项目。我想断言向正确的主机发出了请求,但我找不到如何做到这一点的示例。以下是我正在尝试执行的操作的一些伪代码:
VCR.use_cassette('example.com request') do
subject.domain = 'example.com'
expect { subject.get('/something') }.to make_a_get_request_for('http://example.com/something')
end
假设您的VCR正在录制到YAML(我相信是默认值?),此单行返回在当前盒式磁带块期间调用的HTTP URI数组:
YAML.load_file(VCR.current_cassette.file)["http_interactions"].pluck("request").pluck("uri")
例如,
YAML.load_file(VCR.current_cassette.file)["http_interactions"].pluck("request").pluck("uri")
[
[0] "https://stackoverflow.com/wayland-project/libinput/e0008d3d/tools/libinput-debug-gui.c",
[1] "https://stackoverflow.com/wayland-project/libinput"
]
您可以使用您选择的数组匹配方法从那里断言预期的请求 URI。
您可能希望pluck
而不是uri
request
对象的其他成员:
{
"method" => "get",
"uri" => "https://stackoverflow.com/adomain",
"body" => {
"encoding" => "US-ASCII",
"string" => ""
},
"headers" => {
"Accept" => [
...
}
}