将vcr磁带存储在存储库中是否正确?

use*_*365 9 ruby testing rspec ruby-on-rails vcr

我为一个REST api开发了一个Ruby接口.我使用rspec和vcr进行测试.
所有测试都使用专门为其创建的帐户凭据.
我无法决定:将我的测试(vcr磁带)的缓存响应存储在存储库中,或允许用户和订阅者编写自己的磁带是否正确?

以皇帝的名义!让圣战开始吧!

Bil*_*han 6

录像机的录像带可作为测试的固定装置.您确实需要将它们提交到存储库中,否则您的测试将无法在其他人的计算机中正确运行,或者仅在具有严重外部依赖性的情况下进行更正,这违反了测试原则.

当然,您需要在保留上述内容的同时隐藏公共或团队的凭据.

解决方案是filter_senstive_data设置和费加罗宝石.

起初,Myron在类似问题中给出的答案可以在很大程度上解决您的问题.

设置录像机

VCR.configure do |c|
  c.filter_sensitive_data("<SOMESITE_PASSWORD>") do
    ENV['SOMESITE_PASSWORD']
  end
end
Run Code Online (Sandbox Code Playgroud)

上面的代码块是从Myron的答案中复制的,因为我想稍后再添加

有关此设置的更多信息,请查看文档https://relishapp.com/vcr/vcr/v/2-5-0/docs/configuration/filter-sensitive-data

现在,因为ENV['SOMESITE_PASSWORD']它可以通过使用Figaro gem来获得真正的凭证.

Figaro的安装将创建一个文件config/application.yml并将其添加到.gitignore.因此,您可以在那里输入您的凭据用户名和密码,而不会有泄露给公众的风险.


Aar*_*nin 4

只要您不在请求中包含任何敏感信息,那么我认为您没有理由不能提交它们。

但只要在第一次测试播种盒后它能正常工作,就没有太大的风险。

就我个人而言,我喜欢根据历史请求进行检查的想法,以防我必须诊断一些模糊的机器特定错误,从而更改我的请求格式。(即一些编码错误,由于动态加载的库,事情被错误地转义)。