由于初始化器Yaml文件,Rspec测试未运行

时间:2013-04-15 18:47:47

标签: ruby rspec ruby-on-rails-3.2 yaml

我正在将测试与Rspec集成到相当大的/开发的应用程序中。当我运行测试时,我从一些初始化器中得到了非常奇怪的错误。

例如,我的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']

如果我删除了carrierwave中的那行代码,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文件或在测试中包含一些内容,但我不确定是什么。任何想法都将非常感谢,谢谢。

1 个答案:

答案 0 :(得分: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