【发布时间】:2011-08-23 04:24:58
【问题描述】:
我有三个 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 下运行。
【问题讨论】:
-
将
ARGV.clear直接放入我的代码后,测试套件运行正常。当我运行单个测试文件时,将ARGV.clear放在 RSpec 中有效。为什么 RSpec 在作为测试套件运行时不会清除 ARGV?!?!