Тесты RSpec проходят индивидуально, но не проходят как набор из-за ARGV - PullRequest
0 голосов
/ 23 августа 2011

У меня есть три тестовых файла 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 Ответ

3 голосов
/ 24 августа 2011

Перепишите ваш код так, чтобы ARGV не упоминался в тестируемых вами методах.

Например, если вам нужно проверить, что вы можете анализировать "play_jukebox", то выполните

def test_play_jukebox
  parse_options(["play_jukebox"])
end

и в вашем бин-файле есть

if $0 == __FILE__
  parse_options(ARGV)
end
...