2013-04-15 40 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

相关问题