我使用带有密钥字符串的外部API,并希望将此密钥字符串传递给测试套件。类似的东西:
rake test [key=api_key]
代码和测试将是开源的,但我不允许将我的密钥字符串分发给其他用户,因此我无法将其放在测试文件中。我可以将它作为参数传递吗?
答案 0 :(得分:2)
您有两种选择。将其作为环境变量传递:
API_KEY='key' rake test
然后,您可以通过测试中的ENV对象访问它:
key = ENV['API_KEY']
第二个选项是将此密钥放在一个文件(例如key.txt)中,然后从中读取它。要确保不将该文件与代码一起分发,请将其添加到.gitignore文件(或SCM使用的忽略文件)
答案 1 :(得分:0)
非常感谢!
我实际上是在考虑将它放入文件中并对其进行gitignoring,但最终将参数传递给rake。可能是,我将两者结合起来(它是一个长键)。
修改:test任务的Rakefile代码,例如添加a 它的参数。
task :test, :key do |t, k| result = system("ruby -Ilib -Itest -e 'ARGV.each { |f| load(f) if File.exists?(f)}' test/unit/* '#{k[:key]}'") exit(result ? 0 : 1) end
如果需要,可能需要多于一个密钥。