ruby-on-rails - 我如何使用 puffing-billy 和 VCR 来防止测试 stripe 的结帐创建无穷无尽的新文件?

标签 ruby-on-rails ruby rspec capybara stripe-payments

我正在使用 puffing-billy/vcr/capybara/rspec 编写功能规范来测试我对 Stripe gem 的使用。我的规范通过了,但是每次运行 rspec 时我都无法让 puffing-billy 使用缓存数据而不是创建新文件。

是否可以在不访问网络或模拟任何其他内容的情况下测试 strip 结帐功能?

最佳答案

您可以使用 merge_cached_responses_whitelist 选项来合并响应。很难找出 URL 的正确语法,但这是我想出的:

  • 规则必须是正则表达式。我尝试使用字符串,但它卡住了我的测试。
  • 您必须在正则表达式中包含协议(protocol)(例如https?:\/\/)
  • 对于 HTTPS url,您必须在域之后处理端口 :443

这是我在前端缓存一些 Stripe 响应的规则:

config.merge_cached_responses_whitelist = [
  /api\.stripe\.com(:443)*\/v1\/tokens/,
  /m\.stripe\.com(:443)*\/4/
]

另一个重要提示是 puffing-billy 日志不会打印到您的控制台,而是直接进入您的测试日志 log/test.log。如果您通过以下方式关注您的测试日志,这真的很有帮助:

tail -f log/test.log

你会看到这样的行:

puffing-billy: CACHE KEY for 'https://api.stripe.com:443/v1/tokens' is 'post_e23c813681b1bac66ef1cc6f5f1b56108a18ec52'
puffing-billy: CACHE post for 'https://api.stripe.com:443/v1/tokens'
puffing-billy: CACHE KEY for 'https://m.stripe.com:443/4' is post_8072c2c958962829d4ba630f02301dc3a51f6a6e'
puffing-billy: CACHE post for 'https://m.stripe.com:443/4'

关于ruby-on-rails - 我如何使用 puffing-billy 和 VCR 来防止测试 stripe 的结帐创建无穷无尽的新文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35468506/

相关文章:

ruby-on-rails - 在 Rails 3.2.6 中使用 Paperclip-FFMPEG 从视频中获取元数据

arrays - 如何在 Ruby 中用零填充字符串

mysql - Rails 事件记录查询字符串

ruby-on-rails - 电子邮件规范与 Rails 中的正文内容不匹配

ruby-on-rails - 为 Capybara 组合两个驱动程序

javascript - Rails 网页加载时间较长

ruby-on-rails - 使用 Dokku 在生产服务器中运行旧版本代码的 Rails 延迟作业

rspec - 测试使用 url_for 方法的助手

ruby-on-rails - 如何为 after_save 创建的对象返回验证错误?

ruby-on-rails - 为什么 `config.time_zone`似乎没有任何作用?