我的VCR配置是:
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运行此测试时,它会调用几个第三方API,这些请求将通过VCR记录下来。我遇到的问题是,VCR在运行时似乎正在使用来自其他盒式磁带的请求,这会导致某些测试间歇性失败。我已经检查了录音带,有时(取决于它的显示顺序),所有的请求都会被完美地录制和回放。值得注意的是,当整个套件运行时,它们总是在自己运行时工作。我不会在失败的规范之间共享磁带,唯一共享的是对API的一些公共请求,我强制对磁带进行命名,以确保使用正确的磁带。我希望这是有意义的。
我的主要问题是什么会导致这个问题?在使用record => :new_episodes时,测试工作得很好,但在使用record => :once模式时就不行了。考虑到这种情况,这可能是可以的,但我想确保我没有创建不必要的请求,并且根据我的理解,record => :once应该可以工作,因为每个规范的请求应该是独立的。
我知道在没有更多信息的情况下,这可能很难回答,所以如果有任何有用的信息,请让我知道。提前感谢!
发布于 2013-04-24 14:26:51
正如你所说,很难从你给出的一点点信息中做出回答。不过,我可以给出一些帮助解决问题的建议。
祝好运!
https://stackoverflow.com/questions/16160072
复制相似问题