3

我正在尝试使用 VCR gem、chrome 驱动程序和 webmock 运行 cucumber,但它不起作用。一个问题是没有一个请求被记录下来。我确实设置了 VCR ignore_localhost,我认为由于 javascript 而需要它,如this SO answer中所述中所述。

但是为什么没有www.test.com记录我访问 url(比如说)的步骤请求?我看到加载的 chrome 浏览器和 URL 中的地址,所以我知道黄瓜步骤正在那里。

如果我关闭,ignore_localhost那么我会看到一些录音,但 uri 都是127.0.0.1。我期望的 uri 出现在body: string而不是uri. 为什么会这样?

request:
  method: post
  uri: http://127.0.0.1:9592/session/87bb12aa8b5b1230399b98bcc7d0ba11/url
  body:
    encoding: US-ASCII
    string: ! '{"url":"http://www.test.com"}'
  headers:
    Accept:
    - application/json
    Content-Type:
    - application/json; charset=utf-8
    Content-Length:
    - '46'
    User-Agent:
    - Ruby

如果有帮助,这是我的 VCR 配置

VCR.configure do |c|
  c.cassette_library_dir = 'features/support/vcr_cassettes'
  c.hook_into :webmock
  c.ignore_localhost = true
end
4

1 回答 1

1

首先,像这样设置你的配置:

VCR.configure do |c|
  c.cassette_library_dir = 'features/support/vcr_cassettes'
  c.hook_into :webmock
  c.ignore_localhost = true
  c.allow_http_connections_when_no_cassette = false
end

使用最后一个选项,您告诉 VCR 在没有磁带的情况下不允许真正的 http 请求。现在运行你的测试。我敢打赌它会抛出一个错误!现在您必须告诉 VCR 何时使用哪个磁带。在这里查看 VCR 的黄瓜助手https://www.relishapp.com/vcr/vcr/v/2-4-0/docs/test-frameworks/usage-with-cucumber

VCR 也包括一些其他测试框架的助手https://www.relishapp.com/vcr/vcr/v/2-4-0/docs/test-frameworks

于 2013-04-30T08:38:57.467 回答