如何将全局参数注入Minitest测试?

时间:2018-05-18 20:28:29

标签: ruby minitest

这是我的测试:

require 'minitest/autorun'
class Foo < Minitest::Test
  def test_it
    // here
  end
end

这是我的Rakefile

Rake::TestTask.new(:test) do |test|
  test.libs << 'lib' << 'test'
  test.pattern = 'test/**/test_*.rb'
  test.verbose = false
  test.warning = false
end

我希望能够将一些全局配置参数从Rakefile传递到所有单元测试。我到目前为止找到的唯一方法是通过test__helper.rb的全局变量。但是Rubocop抱怨全局变量,我同意它。有没有Minitest友好的解决方案?

1 个答案:

答案 0 :(得分:0)

我能想到的最简单,最干净的解决方案是通过ENV变量。 (Docs)

您只需使用以下命令调用测试:

SOME_VARIABLE=some_value rake test

最小的你就是

ENV.fetch('SOME_VARIABLE', default_value)

虽然默认值是可选的(但建议使用,否则在想要运行不带参数的测试时会出错)。

我认为这是最干净的解决方案,因为单元测试基本上应该以相同的方式工作。 唯一的原因我可以想到你想要改变单元测试的行为的地方是每个环境(比如让CI服务器运行比平常更长时间的规格,在不同之间有其他的水豚设置机器等)