问题标签 [vcr]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
155 浏览

cucumber - 与 Cucumber 标签一起使用时出现 VCR BadAlias 错误

我必须以步骤为特色

及其定义:

这失败了:

数量发生变化。但是当我这样做时:

有用。可以避免这个补丁使用@vcr标签吗?

这是我的配置:

0 投票
1 回答
507 浏览

cucumber - Ruby,单击 Cucumber 中的链接时录制 VCR 磁带

我有这个:

不记录磁带,我不能使用 tag,需要在步骤定义中完成。

0 投票
1 回答
131 浏览

ruby-on-rails-3 - 印象笔记 API 的 RSpec 测试

我有一个调用 Evernote API 的 Rails 应用程序。我想为这些调用编写 RSpec 测试。这样做的最佳方法是什么?我知道我可以使用 Webmock 或 VCR,但是 - 除非我弄错了 - 如果不推送我的密钥或缓存的 oauth 响应,我将无法在我的存储库中进行自包含测试。

0 投票
1 回答
4284 浏览

ruby-on-rails - 如何在 ruby​​ vcr 中记录 http 交互?

我正在使用以下宝石的 Rails 项目工作。

test_data.yml 中已经记录了很少的 http 交互。我已经实现了新的业务逻辑,并尝试记录 http 交互。但它没有记录。以下是我使用的 VCR 配置。

我在这里做错了什么?

0 投票
1 回答
1345 浏览

ruby-on-rails - VCR 忽略参数:获取真实的 http 请求

我正在用 VCR 为我的测试套件记录 http 请求。我必须忽略一个调用callback的参数,因为该参数是随机的,并且我不希望 VCR 在此参数更改时记录新的请求(因为只有参数更改,而不是请求本身)。

callback但我的问题是,我需要根据我的客户端在运行时生成的原始值来修改 VCR 为我的应用程序提供的响应正文。

这是我的录像机配置:

c.before_http_request(:stubbed?)回调中,真正的值callbackrequest.uri. 然后 VCR 忽略此参数,并重放之前录制的磁带。在c.before_playback回调中,我可以修改interaction.response.body,但callback参数在录制时从盒式磁带中获取值。

如何获得回调内部的真正价值?因为此回调是唯一允许修改响应正文的回调。我试过了callbackc.before_playbackc.after_http_request(:stubbed?)获取响应正文和参数的实际值的位置callback,但是这个钩子为时已晚,因为我的应用程序已经收到了响应正文。

任何猴子补丁,肮脏的黑客或技巧都会很棒!

0 投票
0 回答
312 浏览

guard - 使用 vcr 进行使用guard-rspec 进行集成测试时要跳过的任何标志?

vcr gem 非常适合加速调用外部 API 的测试套件......

如果不使用 VCR,检查测试套件是否仍能通过的最佳程序是什么?有没有使用guard-rspec传递环境变量或标志以跳过VCR的默认方法?

还是我应该将 VCR 初始化块包装在有条件地检查环境变量中?

0 投票
1 回答
1277 浏览

ruby-on-rails - 录像带之间的 VCR 共享请求?

我的录像机配置是:

一个测试示例是:

运行此测试时,它会调用几个第 3 方 API,这些 API 会通过 VCR 记录这些请求。我遇到的问题是,VCR 在运行时似乎正在使用来自其他磁带的请求,这导致某些测试出现间歇性故障。我检查了磁带,有时(取决于顺序是如何显示的)所有请求都会被完美地记录和播放。值得注意的是,当整个套件运行时,它们总是在自己运行时工作。我不会在失败的规范之间共享卡带,唯一共享的是对 API 的一些常见请求,我强制对卡带命名以确保它使用正确的卡带。我希望这是有道理的...

我的主要问题是什么可能导致这个问题?使用测试时也可以正常工作,但使用模式record => :new_episodes时却不行。record => :once考虑到这种情况,这可能没问题,但我想确保我没有创建不必要的请求,并且根据我的理解record => :once应该可以工作,因为每个规范的请求都应该被隔离。

我知道如果没有更多信息,这可能很难回答,所以请告诉我是否有帮助。提前致谢!

0 投票
1 回答
2588 浏览

ruby-on-rails-3 - VCR 仅在 capybara 中使用 selenium webkit 运行一次集成测试

我正在使用 Rspec 和 Capybara 运行集成测试,使用 VCR gem 来模拟 api 请求。我面临着各种各样奇怪的问题。测试首次成功运行并创建 yaml 文件以保存请求及其响应。但是,如果我在创建 yaml 文件后再次运行测试,则会遇到问题并显示以下问题:-

以下是我的 vcr.rb :-

还有我的集成测试:-

需要'spec_helper'

0 投票
1 回答
465 浏览

ruby-on-rails - 运行测试时 VCR 失败并出现 DB(磁带表不存在)错误

在Ruby 1.9 上将VCR与我的 Rails 3.1 应用程序一起rake test使用时,使用现有磁带运行会产生:

错误:test_#create_returns_created_account_upon_successful_creation(AccountServiceTest) ActiveRecord::StatementInvalid: Mysql2::Error: 表 'test_db.vcr_cassettes_account_service_create' 不存在:删除vcr_cassettes_account_service_create

我在test_helper.rb中的 VCR 配置:

适用测试::单元代码:

仅供参考,我也在使用 DatabaseCleaner;不确定那里是否有冲突。有人见过这个吗?

注意:当 VCR 盒式磁带尚不存在时,此操作通过

0 投票
1 回答
4422 浏览

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

我正在处理的一个项目有集成测试,这些测试实际上会通过网络连接到第 3 方 API……运行这些测试需要长时间。我建议我们实现类似 VCR 的东西,以便测试与之交互的数据可以被捕获为夹具,并提高这些测试的可靠性和速度。

我目前无法访问代码库,但我相信测试正在做这样的事情:

所以基本上,前块发出了一个 Web 请求,示例发出了一个完全不同的请求,而后块(我知道这不是理想的使用)发出了第三个请求来清理示例创建的记录。

我在 spec_helper 中设置了一个 around 块,它捕获 Web 请求并以示例命名存储它们。但是,在反复运行测试之后,我发现它们变得非常不稳定,有时通过,有时没有。我尝试将 before 和 after 块包装在单独的 VCR.use_cassette 块调用中,但没有任何区别。

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