【问题标题】:Rspec tests not running because of initializer Yaml files由于初始化程序 Yaml 文件,Rspec 测试未运行
【发布时间】:2013-04-15 18:47:47
【问题描述】:

我正在将带有 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 文件或在测试中包含一些内容,但我不确定是什么。任何想法将不胜感激,谢谢。

【问题讨论】:

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


    【解决方案1】:

    您似乎需要在相关 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-13
      • 2014-07-16
      • 1970-01-01
      • 2015-08-19
      • 2011-11-25
      • 2017-09-19
      • 2013-11-10
      • 1970-01-01
      相关资源
      最近更新 更多