我有三个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下运行。
答案 0 :(得分:3)
重写您的代码,以便在您正在测试的方法中未提及ARGV。
例如,如果您需要测试可以解析“play_jukebox”,那么请执行
def test_play_jukebox
parse_options(["play_jukebox"])
end
并在你的bin文件中有
if $0 == __FILE__
parse_options(ARGV)
end