我最近不得不将一个项目从 rails 4.0 迁移到 rails 4.1,在此过程中,我还将 RSpec 更新为 RSpec (3.0.0)。
该项目之前在 Capybara 测试的某些功能规范中具有以下内容:
需要'spec_helper' 需要'support/integration_helpers.rb'
需要'support/admin_support/admin_user_creation_helpers.rb'包括 BuildDefaults
include BuildDefaults
引用一个模块并spec/support/build_defaults.rb
具有各种帮助方法以确保已正确填充数据库。由于某种原因,这现在已经停止工作并给出以下错误(和堆栈跟踪):
path_to/spec/features/admin_features/admin_login_out_spec.rb:4:in
<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
block in load_spec_files' from /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' 来自 /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
run' from /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
invoke ' 来自 /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
' 来自 /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
require' from -e:1:in `'
有人会碰巧知道为什么会这样吗?
对于此事,我将不胜感激。
我已经查看了与这个标题相似的其他各种 SO 问题,但似乎没有一个是相关的。
旁注1
值得注意的是,我已经从我的测试环境中删除了 Spork,因为它由于某些原因不能很好地运行,而是将项目配置为使用 Spring。虽然我认为这与问题无关,但我确实必须完全重建测试环境(rails g rspec:install
例如运行),然后使用Transpec更新 Rspec 语法。