使用RSpec获取未初始化的常量错误。 不知道是什么导致了它

我正在使用RSpec进行测试,当我周五下午离开工作时,我的测试正在通过。 但当我回家并同步我的存储库时,我的笔记本电脑上的测试失败了。 现在回到工作岗位,测试仍然失败。 不要相信它的代码,因为运行rspec本身会返回错误,spork甚至不会启动。 当我尝试启动Spork时,收到以下错误消息:

Using RSpec Loading Spork.prefork block... uninitialized constant ActionView::Template::Handlers::ERB::ENCODING_FLAG (NameError) /home/jeff/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/rspec-core-2.2.1/lib/rspec/core/backward_compatibility.rb:20:in `const_missing' /home/jeff/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/actionpack-3.0.3/lib/action_view/template/handlers/erb.rb:85:in `' /home/jeff/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/actionpack-3.0.3/lib/action_view/template/handlers/erb.rb:70:in `' /home/jeff/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/actionpack-3.0.3/lib/action_view/template/handlers/erb.rb:28:in `' /home/jeff/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/actionpack-3.0.3/lib/action_view/template/handlers/erb.rb:27:in `' /home/jeff/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/actionpack-3.0.3/lib/action_view/template/handlers/erb.rb:6:in `' /home/jeff/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/actionpack-3.0.3/lib/action_view/template/handlers.rb:10:in `extended' /home/jeff/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/actionpack-3.0.3/lib/action_view/template.rb:99:in `extend' /home/jeff/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/actionpack-3.0.3/lib/action_view/template.rb:99:in `' /home/jeff/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/actionpack-3.0.3/lib/action_view/template.rb:8:in `' /home/jeff/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/actionpack-3.0.3/lib/action_view/template.rb:6:in `' :29:in `require' :29:in `require' /home/jeff/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/actionpack-3.0.3/lib/action_view/template/resolver.rb:3:in `' :29:in `require' :29:in `require' /home/jeff/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/actionpack-3.0.3/lib/action_view/testing/resolvers.rb:1:in `' :29:in `require' :29:in `require' /home/jeff/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/rspec-rails-2.2.1/lib/rspec/rails/view_rendering.rb:1:in `' :29:in `require' :29:in `require' /home/jeff/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/rspec-rails-2.2.1/lib/rspec/rails.rb:9:in `' :33:in `require' :33:in `rescue in require' :29:in `require' /home/jeff/Projects/Rails/vahsfbhistory/spec/spec_helper.rb:10:in `block in ' /home/jeff/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/spork-0.8.4/lib/spork.rb:23:in `prefork' /home/jeff/Projects/Rails/vahsfbhistory/spec/spec_helper.rb:5:in `' /home/jeff/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/spork-0.8.4/lib/spork/test_framework.rb:138:in `load' /home/jeff/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/spork-0.8.4/lib/spork/test_framework.rb:138:in `block (2 levels) in preload' /home/jeff/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/spork-0.8.4/lib/spork/app_framework.rb:64:in `preload' /home/jeff/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/spork-0.8.4/lib/spork/test_framework.rb:134:in `block in preload' /home/jeff/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/spork-0.8.4/lib/spork.rb:67:in `exec_prefork' /home/jeff/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/spork-0.8.4/lib/spork/test_framework.rb:120:in `preload' /home/jeff/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/spork-0.8.4/lib/spork/run_strategy/forking.rb:25:in `preload' /home/jeff/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/spork-0.8.4/lib/spork/runner.rb:74:in `run' /home/jeff/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/spork-0.8.4/lib/spork/runner.rb:9:in `run' /home/jeff/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/spork-0.8.4/bin/spork:10:in `' /home/jeff/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/bin/spork:19:in `load' /home/jeff/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/bin/spork:19:in `' 

有人知道是什么原因引起的吗?

我遇到了这个问题。 在spec_helper.rb中尝试替换:

 require "rails" 

 require "rails/all" 

在我的情况下工作。

您需要初始化环境,将此行添加到spec_helper.rb

 require File.expand_path("../../config/environment", __FILE__) 

如果您尝试在非rails项目中使用rspec-rails ,则可能会遇到此问题。 在这种情况下使用require "rails/all"不是一个选项,因为它需要ActiveRecord的东西让你:

ActiveRecord::ConnectionNotEstablished: No connection pool with 'primary' found.

相反,你可以解决这个问题:

require "action_controller/railtie"

如果它不是Rails应用程序并且您不想包含所有Rails,请将其添加到spec_helper.rb

 require 'action_view'