问题标签 [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 投票
1 回答
830 浏览

ruby - 带有 Webmock 的 VCR 错误地存根 Typhoeus(nil:NilClass 的未定义方法 `>=')

我想要什么:每次运行测试时调用外部 API 以返回相同的东西我得到了什么:第一次 VCR 保存它,第二次 Typhoeus 返回错误

发生的情况是我运行一次测试,它发出实际请求(当我创建组织和用户时发生),然后当我再次运行它时,它无法正确解析请求。

第一次运行:

以下所有运行,直到我删除磁带:

这可以追溯到这些行(来自我使用的私人宝石)

版本:

  • 录像机 (2.9.0)
  • 网络模型 (1.18.9)
  • 台风 (0.6.8)

设置:

测试:

0 投票
1 回答
1464 浏览

ruby-on-rails - Stripe - 在测试模式下向客户添加无效卡?

我想用 VCR 测试 invoice.payment_failed 事件

伪代码:

  1. 使用无效卡创建客户
  2. 使用发票项目创建发票(此处发票自动支付)
  3. 使用 Stripe::Event 获取 invoice.payment_failed 事件

在第 1 步中,Stripe 返回错误,提示我要添加无效卡。我使用了https://stripe.com/docs/testing中的“4000000000000119”卡号

基本上我想创建一个场景,其中用户的卡在他们第一次购买/订阅时曾经有效。但一年后它不再有效。

我不想模拟事件数据并将它们存储在 yml 中。我直接从 Stripe 获取事件并用 VCR 记录它。

答案是: 4000 0000 0000 0341 卡号。在https://stripe.com/docs/testing中描述 (所以不允许我在发布后 8 小时内回答我的问题)

0 投票
1 回答
1910 浏览

ruby-on-rails - 录像机不使用法拉第录制磁带

我已经在互联网上搜索了这个问题的答案,包括关于 SO 的大多数其他“建议”问题。

我在 rspec 中配置了 VCR,但是在运行测试时,VCR 从不记录磁带(磁带目录保持为空)并且每次都运行 HTTP 请求。

我的 VCR 配置如下所示:

我正在使用faraday,因为我正在使用的 LinkedIn gem ( https://github.com/bobbrez/linkedin2 ) 已经faraday用于发出请求。我正在运行的测试规范如下所示:

它每次都通过,但只有在每次都发出 API 请求之后。VCR 调试日志在每次运行规范时都显示完全相同的内容:

它似乎应该录制磁带,但目录.yml中没有出现任何文件spec/vcr_cassettes

(使用 Rails 4、rspec 3、vcr 2.9)

0 投票
1 回答
980 浏览

ruby - 录像机没有记录我的回应

我正在尝试记录该方法images请求打开 uri 并从特定博客中抓取图像的响应。但是,当我运行测试套件时,VCR 并没有创建yoko/bot_response盒式磁带目录的内部并记录下来。有什么我没有包括或不理解的东西吗?(注:图像使用 open-uri 发出请求)

示例规格:

录像机配置:

0 投票
1 回答
337 浏览

ruby-on-rails - 运行测试时从标准输出中删除 VCR/Webmock 日志

在标准 Rails 3.2.19 项目中,使用 RSpec 运行测试时,我在使用 VCR 磁带时在标准输出上获取这些日志:

我怎样才能让这些转到 log/test.log 呢?

0 投票
1 回答
1251 浏览

ruby - 您如何使用 VCR 和 Webmock 以基本身份验证存根发布请求?

免责声明:我是 API 新手,在尝试解决这个看似简单的问题一周后,我已经迷失了方向。

我有与已正确实现的 Github API 交互的代码,但我想返回并使用 RSpec、Webmock 和 VCR 对其进行测试。

基本上,我有一个#create方法可以让用户在 Github 上创建一个新的存储库。

这是该方法的代码:

def self.create(属性)

这一切所做的就是POST使用给定的某些属性发出实际请求,并将发布的信息存储到一个名为的变量post中,然后将其作为属性传递给另一个方法#parse_response_from。这种#parse_response_from方法是我想测试的,但我一生都无法理解如何post用 Webmock 和 VCR 模拟属性。

这就是我需要模仿的 post 变量在生产中的样子:

基本上,我真正需要从这个散列中传递一些变量到#parse_response_from方法中。我现在测试的方式只是将某些静态键/值对存储到 before 块中并测试该代码。看一下:

如何使用 Webmock 将其存根stub_request并将其传递到 VCR 磁带?我已经看到了很多存根的示例GET,但我不明白如何使用 Webmock 为POST. 具体来说,我需要了解如何从 Webmock 存根返回post变量中显示的数据。

我正在寻找一个特定的示例或半示例来指导我朝着正确的方向前进,而不是建议在其他地方查看某些文档,因为我将再次绕圈运行。

0 投票
2 回答
549 浏览

ruby-on-rails - Feedjira:录像机不录制磁带

我有一个非常简单的控制器,它使用 Feedjira 从 rss 中获取一些数据。我想通过记录 RSS 响应来测试这个控制器。这是控制器代码:

和我的规格测试:

和 vcd 配置的代码:

由于某些未知原因,此特定测试中未记录 VCR 盒式磁带。所有其他使用网络调用的测试都可以正常工作,但是在使用 Feedjira 的测试中,vcr 似乎没有检测到网络调用。为什么?

0 投票
1 回答
1161 浏览

ruby-on-rails - VCR+rspec 元数据:如何使用推断的磁带名称,如 use_vcr_cassette

VCR测试 gem 提供了一个名为的宏,use_vcr_cassette它有一个方便的约定,可以根据示例名称推断磁带名称。由于use_vcr_cassette宏在最新版本的 VCR 中已被弃用,而支持 rspec 元数据(即:vcr),是否还有任何方法可以自动获取磁带名称而无需在每个规范中指定它?

(顺便说一句,我将它与 Rails 应用程序一起使用。)

0 投票
0 回答
2008 浏览

ruby-on-rails - 可在一个 VCR 磁带中匹配多个 HTTP 请求以进行 rspec 测试

我有一个规范文件,期望控制器操作将返回成功。

控制器中的POST api/v1/users/:id/features/block操作调用外部 API 上的两个 HTTP 调用,唯一的区别在于主体。

我已经将两个请求和响应放在同一个 VCR 磁带盒中,但是当使用磁带盒时,只有第一个请求会被比较,并且在它应该匹配第二个时失败,导致测试失败。

我正在寻找的是一种让多个请求匹配的方法,以便控制器操作完成并成功返回。

我得到的错误在最后。

我的 VCR 配置和 RSpec 配置的简化版本如下:

我遇到问题的比较中使用的磁带的总结版本是:

测试期间的错误:

我不想记录新请求,因为第二个请求会覆盖第一个请求,而不是将第二个请求添加到磁带的末尾。

0 投票
1 回答
7547 浏览

ruby-on-rails - VCR 在第二次尝试运行测试时抛出无法处理请求(第一次尝试通过)

我已经设置了 VCR,它可以在我编写的几个测试中运行,没有问题。我尝试编写的最新测试在第一次运行时会通过,但之后会一直失败,除非我删除磁带。测试的代码是:

错误信息如下:

失败/错误: CreateRecurlyTestData.create_account(user_guid, nil, nil) VCR::Errors::UnhandledHTTPRequestError:

规范助手中唯一的配置选项是: