我正在尝试使用VCR gem,Chrome驱动程序和webmock运行黄瓜,但它无法运行。一个问题是记录了 none 的请求。我确实将录像机设置为ignore_localhost
,我认为这是因为j SO answer中解释的所需。
但为什么我的步骤请求访问网址(说www.test.com
)没有被记录?我看到Chrome浏览器加载和网址中的地址所以我知道黄瓜步是去那里。
如果我关闭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.configure do |c|
c.cassette_library_dir = 'features/support/vcr_cassettes'
c.hook_into :webmock
c.ignore_localhost = true
end
答案 0 :(得分: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的黄瓜帮手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