【发布时间】:2023-03-09 16:16:01
【问题描述】:
我的录像机配置是:
VCR.configure do |c|
c.configure_rspec_metadata!
c.cassette_library_dir = 'spec/cassettes'
c.hook_into :webmock
c.ignore_localhost = true
end
一个测试例子是:
it "creates a build", :vcr => {:cassette_name => "build/feature/create"} do
visit new_build_path(build)
fill_in("build_name", :with => "Test Build")
click_button("Create Build")
build = Build.first
page.should have_content("Build was successfully created.")
current_path.should == build_path(hub)
end
在运行此测试时,它会调用多个第 3 方 API,这些 API 会通过 VCR 记录这些请求。我遇到的问题是,VCR 在运行时似乎正在使用来自其他磁带的请求,这导致某些测试出现间歇性故障。我检查了磁带,有时(取决于顺序是如何显示的)所有请求都会被完美地记录和播放。值得注意的是,当整个套件运行时,它们总是在自己运行时工作。我不会在失败的规范之间共享卡带,唯一共享的是对 API 的一些常见请求,我强制对卡带命名以确保它使用正确的卡带。我希望这是有道理的......
我的主要问题是什么会导致这个问题?当使用record => :new_episodes 时,测试也能完美运行,但在使用record => :once 模式时就不行了。考虑到这种情况,这可能没问题,但我想确保我不会创建不必要的请求,并且据我了解,record => :once 应该可以工作,因为每个规范的请求都应该被隔离。
我知道如果没有更多信息,这可能很难回答,因此请告诉我是否有帮助。提前致谢!
【问题讨论】:
-
那是什么?水豚?
-
是的,我正在使用 capybara 和 poltergeist 驱动程序进行基于 JS 的测试
-
您需要提及并正确标记您的问题,否则您将不会得到很好的回应。
标签: ruby-on-rails ruby capybara vcr poltergeist