2013-03-19 49 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'應加載文件只有一次。我認爲問題在別的地方。 – 2013-03-19 11:54:37

+1

@SergioTulentsev Cucumber [使用'load'加載](https://github.com/cucumber/cucumber/blob/f74a8dad3e8ff1b1e9fe7762369266817f229a8f/lib/cucumber/rb_support/rb_language.rb#L137),而不是'require' – 2013-03-19 12:44:41

+0

也許你可以做你想做什麼與你的助手和模型在黃瓜之前掛鉤? – Alexis 2013-03-19 22:26:38

回答

1

您可以在silence_warnings塊包裝代碼:

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

有可能是一個更好的辦法來什麼,那就是你正在試圖做的,在某種程度上,這將起到很好的與您的測試框架,但上面的代碼應該處理你的直接問題。

+0

第一次文件是需要的代碼裏面的問題和你的這樣回答silent_warnings無濟於事。第二次使用Cucumber使用'load'加載它們,此時產生警告 – 2013-03-19 20:31:29

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