如何使用 puffing-billy 和 VCR 来防止测试条的结帐创建无休止的新文件?

Eri*_*ric 3 ruby rspec ruby-on-rails capybara stripe-payments

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

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

ndb*_*ent 5

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

  • 规则必须是正则表达式。我尝试使用字符串,但它冻结了我的测试。
  • 不能在你的正则表达式中包含协议(例如https?:\/\/
  • 对于 HTTPS 网址,您必须:443在域后处理端口

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

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

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

tail -f log/test.log
Run Code Online (Sandbox Code Playgroud)

你会看到这样的行:

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'
Run Code Online (Sandbox Code Playgroud)