如何将参数传递给MiniTest :: Unit :: TestCase套件?

时间:2012-06-12 22:33:26

标签: ruby rake minitest

我使用带有密钥字符串的外部API,并希望将此密钥字符串传递给测试套件。类似的东西:

rake test [key=api_key]

代码和测试将是开源的,但我不允许将我的密钥字符串分发给其他用户,因此我无法将其放在测试文件中。我可以将它作为参数传递吗?

2 个答案:

答案 0 :(得分:2)

您有两种选择。将其作为环境变量传递:

API_KEY='key' rake test

然后,您可以通过测试中的ENV对象访问它:

key = ENV['API_KEY']

第二个选项是将此密钥放在一个文件(例如key.txt)中,然后从中读取它。要确保不将该文件与代码一起分发,请将其添加到.gitignore文件(或SCM使用的忽略文件)

答案 1 :(得分:0)

非常感谢!

我实际上是在考虑将它放入文件中并对其进行gitignoring,但最终将参数传递给rake。可能是,我将两者结合起来(它是一个长键)。

  1. 修改: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
    
  2. 拨打佣金测试[' blah-blah']
  3. 如果需要,可能需要多于一个密钥。