2013-03-19 1 views
3

Я требую некоторых файлов в features/support/env.rb как:Как я могу избавиться от уже инициализированных постоянных предупреждений при запросе файлов внутри env.rb?

['/helpers/*', '/pages/*', '/models/*'].each do |path| 
    Dir[File.dirname(__FILE__) + path].each { |file| require file } 
end 

(. Я делаю это, как я хочу, чтобы создать тестовые пользователь и некоторые другие вещи, прежде чем любые из моих тестов выполняется)

Но, кажется, эти файлы затем загружается огурец с помощью load как я получаю тонны предупреждений, как когда Огурцы загружает их:

/home/andrey/dev/project/features/support/models/my_class.rb:2: warning: already initialized constant MyClass::MY_CONSTANT 

при сценарии запуска. Как я могу избавиться от этих предупреждений?

+0

'require' должен загрузить файл только один раз. Я думаю, что проблема в другом месте. –

+1

@ SergioTulentsev Cucumber [загружает его с помощью 'load'] (https://github.com/cucumber/cucumber/blob/f74a8dad3e8ff1b1e9fe7762369266817f229a8f/lib/cucumber/rb_support/rb_language.rb#L137), а не' require' –

+0

Возможно, вы можете делайте то, что вы хотите делать со своими помощниками и моделями в огурце. Перед крюком? – Alexis

ответ

1

Вы можете обернуть свой код в silence_warnings блоке:

silence_warnings do 
    ['/helpers/*', '/pages/*', '/models/*'].each do |path| 
    Dir[File.dirname(__FILE__) + path].each { |file| require file } 
    end 
end 

Там, вероятно, лучший способ, чтобы все это, что вы пытаетесь сделать, таким образом, что будет играть хорошо с тестовой базы , но вышеприведенный код должен ответить на ваш вопрос.

+0

Файлы первого раза требуются кодом внутри вопроса и вашим ответ, так что молчание_warnings не поможет. Во второй раз они загружаются с использованием 'load' с использованием самого Cucumber и в это время генерируется предупреждение –

0

Возможно, вы можете настроить свои помощники и модели в огурце. Перед крюком.

Рекомендуемый способ запустить, прежде чем крючок только один раз, чтобы использовать глобальную переменную, так:

Before do 
    if !$already_required 
    ['/helpers/*', '/pages/*', '/models/*'].each do |path| 
     Dir[File.dirname(__FILE__) + path].each { |file| require file } 
    end 
    $already_required = true 
    end 
end 

(https://github.com/cucumber/cucumber/wiki/Hooks#running-a-before-hook-only-once)