加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – vcr从多个Web请求中断

发布时间:2020-12-17 01:29:35 所属栏目:百科 来源:网络整理
导读:我正在开发的一个项目有集成测试,它实际上已经通过线路击中了第三方API …运行这些测试需要很长时间.我建议我们实现像VCR这样的东西,以便测试与之交互的数据可以作为固定装置捕获,并提高这些测试的可靠性和速度. 我此刻无法访问代码库,但我相信测试是这样做
我正在开发的一个项目有集成测试,它实际上已经通过线路击中了第三方API …运行这些测试需要很长时间.我建议我们实现像VCR这样的东西,以便测试与之交互的数据可以作为固定装置捕获,并提高这些测试的可靠性和速度.

我此刻无法访问代码库,但我相信测试是这样做的:

before do
  login_some_user
end

after do
  make_web_request_to_clear_items_in_cart
end

it "adds some items to the user's cart" do
  make_web_request_to_add_item_to_a_cart
end

所以基本上前面的块是发出一个Web请求,例子是一个完全不同的请求,一个后块(我知道它不是理想的)发出第三个请求来清理由示例创建的记录.

我在spec_helper中设置了一个around块,用于捕获Web请求并以示例的名称存储它们.但是,在重复运行测试后,我发现它们变得非常松散,有时会通过,有时不会……我尝试在单独的VCR.use_cassette块调用中包装前后块,但它没有任何区别.

我想知道我是否遗漏了一些东西,如果有办法处理这样的多个请求或什么?

解决方法

VCR可以处理多个请求.从您的伪代码,您将有以下内容:

it "adds some items to the user's cart" do
 VCR.use_cassette "your_path/cassette_name" do
   login_some_user
   make_web_request_to_add_item_to_a_cart
   make_web_request_to_clear_items_in_cart
 end
end

盒式磁带your_path / cassette_name将包含所有3个Web请求.

您的问题可能来自使用前后块.请参阅Myron Marston explanation VCR如何处理before(:all)挂钩.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读