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

时间:2013-07-30 15:23:54

标签: ruby-on-rails ruby testing rspec vcr

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

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

2 个答案:

答案 0 :(得分:6)

录像机的录像带作为测试的固定装置。您确实需要将它们提交到存储库中,否则您的测试将无法在其他人的计算机上正确运行,或者只能通过严重的外部依赖来纠正,这违反了测试原则。

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

解决方案是filter_senstive_data设置和Figaro gem。

首先,This answer from Myron in a similar question可以在很大程度上解决您的问题。

设置录像机

VCR.configure do |c|
  c.filter_sensitive_data("<SOMESITE_PASSWORD>") do
    ENV['SOMESITE_PASSWORD']
  end
end

上面的代码块是从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。因此,您可以在那里输入您的凭证用户名和密码,而不会有泄露给公众的风险。

答案 1 :(得分:3)

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

但是只要在第一次测试播种盒之后它能够正常工作,无论如何都没有太大的危险。

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