我最近不得不将项目从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:ineach' 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:insetup' 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:inrun' 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:inrequire' 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语法
答案 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.rb
,spec/support/build_defaults.rb
现在包含在加载路径中。
希望这有助于将来的某些人。