2014-01-13 3 views
2

У меня есть »buildr« »buildfile« который запускает некоторые »тесты rspec«. Я хотел бы передать некоторые параметры пути для тестов, так что это не вызовет проблем с загрузкой файлов тестовых ресурсов. В »файле построение« Я получил этот код для запуска тестов:Buildr, параметр RSpec-pass build для проверки

RSpec.configure do |config| 
    config.add_setting :spec_resources_dir, :default => _(:src, 'spec', 'ruby', 'resources') 
end 

RSpec::Core::RakeTask.new(:run_rspec) do |t| 
    t.pattern = 'src/spec/**/*_spec.rb' 
end 
task test => [:run_rspec] 

Но если я пытаюсь получить значение в файле спецификации, как это:

RSpec.configuration.spec_resources_dir 

Я получаю эту ошибку

undefined method `spec_resources_dir' […] (NoMethodError) 

Любые идеи?

ответ

1

Задача RSke rake запускает спецификации в отдельном процессе, поэтому конфигурация, которую вы делаете с RSpec.configure в файле сборки, не будет отображаться в текущих спецификациях.

Два предложения для прохождения информации от файла построения к вашей спецификации задаче:

  1. Генерировать spec_helper и требует его от ваших спецификаций (или с помощью опции линии -r команды RSpec и параметра rspec_opts конфигурации на RSpec::Core::RakeTask). Вы можете использовать фильтрацию buildr для замены значений из файла build в помощник.
  2. Задайте значения в ENV, а затем прочитайте их из своих спецификаций. Переменные среды разделяются между родительскими и дочерними процессами.

По желанию, пример для # 1:

RSpec::Core::RakeTask.new do |t| 
    t.rspec_opts = "-r '#{_(:target, 'spec_helper.rb')}'" 
end 

Это предполагает, что вы (возможно, в другой задаче) порождают помощника спецификации в _(:target, 'spec_helper.rb')

+0

, которая выглядит очень похоже на ответ! Не могли бы вы отбросить строку кода, чтобы показать, как использовать «rspec_opts» задачи rake, я новичок в ruby, rspec и т. Д., И в документации нет примера ... Спасибо вперёд! – philipp

+0

Спасибо, очень добрый, чтобы опубликовать пример! – philipp