RSpec 3,capybara 2.3.0,Guard 2.6.1,Rails 4.1.1 uninitialized constant(NameError)

时间:2014-06-26 18:03:16

标签: ruby-on-rails-4 rspec capybara guard rspec3

我最近不得不将项目从rails 4.0迁移到rails 4.1,并且在此过程中我还将RSpec更新为RSpec(3.0.0)。

该项目之前在使用Capybara测试的某些功能规格中有以下内容:

  

要求' spec_helper'要求支持/ integration_helpers.rb'
  要求&support;支持/ admin_support / admin_user_creation_helpers.rb'

     

包括BuildDefaults

include BuildDefaults引用模块spec/support/build_defaults.rb并具有各种帮助方法以确保数据库已正确填充。由于某种原因,这已经停止工作并给出以下错误(和堆栈跟踪):

  

path_to /规格/特征/ admin_features / admin_login_out_spec.rb:4:在   load_spec_files中的<top (required)>': uninitialized constant BuildDefaults (NameError) from /Users/u_name/.rvm/gems/ruby-2.1.2@gemset_name/gems/rspec-core-3.0.2/lib/rspec/core/configuration.rb:1057:in 阻止&#39;从   /Users/u_name/.rvm/gems/ruby-2.1.2@gemset_name/gems/rspec-core-3.0.2/lib/rspec/core/configuration.rb:1057:in   each' from /Users/u_name/.rvm/gems/ruby-2.1.2@gemset_name/gems/rspec-core-3.0.2/lib/rspec/core/configuration.rb:1057:in load_spec_files&#39;从   /Users/u_name/.rvm/gems/ruby-2.1.2@gemset_name/gems/rspec-core-3.0.2/lib/rspec/core/runner.rb:97:in setup' from /Users/u_name/.rvm/gems/ruby-2.1.2@gemset_name/gems/rspec-core-3.0.2/lib/rspec/core/runner.rb:85:in运行&#39;从   /Users/u_name/.rvm/gems/ruby-2.1.2@gemset_name/gems/rspec-core-3.0.2/lib/rspec/core/runner.rb:70:in run' from /Users/u_name/.rvm/gems/ruby-2.1.2@gemset_name/gems/rspec-core-3.0.2/lib/rspec/core/runner.rb:38:in调用&#39;从   /Users/u_name/.rvm/gems/ruby-2.1.2@gemset_name/gems/rspec-core-3.0.2/exe/rspec:4:in   <top (required)>' from /Users/u_name/Documents/rails/work/c_central_4.1.1/gemset_name/bin/rspec:7:in &#39;从   /Users/u_name/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in   require' from /Users/u_name/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in 需要&#39;来自-e:1:在`&#39;

有人会碰巧知道为什么会这样吗?

我非常感谢有关此事的任何帮助。

我已经查看了其他各种类似标题的SO问题,但它们似乎都没有相关性。

旁注1

值得注意的是,我已将Spork从我的测试环境中移除,因为由于某些原因它没有很好地播放,而是将项目配置为使用Spring。虽然我不认为这与此问题有任何关系,但我必须完全重建测试环境(例如运行rails g rspec:install),然后使用Transpec更新Rspec语法

1 个答案:

答案 0 :(得分:4)

花了一些时间寻找解决方案,我最终遇到了official upgrade documentation(我知道,我知道)。

正如文档中所述,

  

在RSpec 3.x中创建的默认帮助程序文件已更改

     

在以前的版本中,只生成了一个spec_helper.rb文件。这个文件   已被移至rails_helper.rb。新的spec_helper.rb是一样的   运行rspec生成的标准帮助器--init。

     

这一改变是为了实现两个总体目标:

     
      
  • 使安装过程与常规RSpec更改保持同步

  •   
  • 提供开箱即用的方法,以避免为这些规范加载Rails   不需要它

  •   

第二点让我想到了capybara的功​​能规范需要加载应用程序堆栈的事实。因此,通过加载rails_helper.rb而不是spec_helper.rbspec/support/build_defaults.rb现在包含在加载路径中。

希望这有助于将来的某些人。