RSpec测试单独传递但由于ARGV而失败

时间:2011-08-23 04:24:58

标签: ruby rspec rspec2

我有三个RSpec2测试文件,每个文件都单独传递。但是使用rspec spec(或jruby -S rspec spec)运行套件失败。

问题:ARGV被设置为["spec"]并且使用spec参数运行我的程序会改变其行为。我试着用我的测试来处理这个:

before(:each) do
  ARGV.clear  # also tried: ARGV.delete_if { |val| true }
end

但我的代码中的puts ARGV语句表明ARGV仍设置为["spec"]

我还创建了一个spec/spec_helper.rb文件:

RSpec.configure do |config|
  config.before(:suite) do
    ARGV.clear
  end
end

具有相同的结果。当我单独运行测试时,ARGV是空的。但是,当我运行rspec spec时,ARGV["spec"]

可能相关的背景:我在rbenv下运行。

1 个答案:

答案 0 :(得分:3)

重写您的代码,以便在您正在测试的方法中未提及ARGV。

例如,如果您需要测试可以解析“play_jukebox”,那么请执行

def test_play_jukebox
  parse_options(["play_jukebox"])
end

并在你的bin文件中有

if $0 == __FILE__
  parse_options(ARGV)
end