首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >磁带之间的VCR共享请求?

磁带之间的VCR共享请求?
EN

Stack Overflow用户
提问于 2013-04-23 10:49:47
回答 1查看 1.2K关注 0票数 0

我的VCR配置是:

代码语言:javascript
复制
VCR.configure do |c|
  c.configure_rspec_metadata!
  c.cassette_library_dir = 'spec/cassettes'
  c.hook_into :webmock
  c.ignore_localhost = true
end

一个测试示例是:

代码语言:javascript
复制
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应该可以工作,因为每个规范的请求应该是独立的。

我知道在没有更多信息的情况下,这可能很难回答,所以如果有任何有用的信息,请让我知道。提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-24 14:26:51

正如你所说,很难从你给出的一点点信息中做出回答。不过,我可以给出一些帮助解决问题的建议。

  • 您提到您使用的是水豚JS驱动程序。Capybara的JS驱动程序是异步的,这意味着在您的应用程序处理特定请求之前,您的测试线程可能会继续运行--因此,如果测试脚本继续运行并弹出或插入新的录像机磁带,然后您的应用程序发出HTTP请求--这可能会导致竞争conditions.
  • VCR有一个debug_logger选项,可以让您深入了解录像机到底在做什么。它可能会回答你的问题。

祝好运!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16160072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档