use*_*365 9 ruby testing rspec ruby-on-rails vcr
我为一个REST api开发了一个Ruby接口.我使用rspec和vcr进行测试.
所有测试都使用专门为其创建的帐户凭据.
我无法决定:将我的测试(vcr磁带)的缓存响应存储在存储库中,或允许用户和订阅者编写自己的磁带是否正确?
以皇帝的名义!让圣战开始吧!
录像机的录像带可作为测试的固定装置.您确实需要将它们提交到存储库中,否则您的测试将无法在其他人的计算机中正确运行,或者仅在具有严重外部依赖性的情况下进行更正,这违反了测试原则.
当然,您需要在保留上述内容的同时隐藏公共或团队的凭据.
解决方案是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.因此,您可以在那里输入您的凭据用户名和密码,而不会有泄露给公众的风险.
只要您不在请求中包含任何敏感信息,那么我认为您没有理由不能提交它们。
但只要在第一次测试播种盒后它能正常工作,就没有太大的风险。
就我个人而言,我喜欢根据历史请求进行检查的想法,以防我必须诊断一些模糊的机器特定错误,从而更改我的请求格式。(即一些编码错误,由于动态加载的库,事情被错误地转义)。
| 归档时间: |
|
| 查看次数: |
1562 次 |
| 最近记录: |