如何在使用 VCR 和 WebMock 时使用正确的 URI 断言 HTTP 请求



我正在使用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" => [
          ...
        }
}

相关内容

  • 没有找到相关文章

最新更新