2013-04-15 54 views
3

我正在將測試與Rspec集成到相當大的/開發的應用程序中。當我運行測試時,我發現我的一些初始化程序非常奇怪的錯誤。Rspec測試未運行,因爲初始化程序Yaml文件

例如,我carrierwave.rb負載YAML文件,當我運行測試命令我得到:

carrierwave.rb:11:in `block in <top (required)>': undefined method `[]' for nil:NilClass 

它指的是下面的代碼的第二行:

fog_config = YAML::load_file(Rails.root.join 'config/fog.yml')[Rails.env.to_s] 
config.fog_directory = fog_config['directory'] 

瞬間,如果我刪除載波中的那一行代碼,omniauth也開始抱怨:

omniauth.rb:4:in `block in <top (required)>': undefined method `symbolize_keys' for nil:NilClass (NoMethodError) 

同樣,另一個YAML文件:

fb_config = YAML::load_file(Rails.root.join 'config/fb_app_version.yml')[Rails.env].symbolize_keys 

我猜的解決辦法是改變我的YAML文件或包含在測試中的東西,但我不知道是什麼。任何想法將不勝感激,謝謝。

回答

4

看起來你需要在有問題的Yaml文件中包含test條目。

例如,您可能config/fog.yml看起來是這樣的:

production: 
    directory: the_prod_directory 
    other_keys: ... 

development: 
    directory: the_dev_directory 
    other_keys: ... 

您需要添加一個test鍵:

test: 
    directory: the_test_dir 
    other_keys: appropriate values 
+0

謝謝!一旦我讀到你的答案就很有意義! – Dol

相關問題