23

我正在使用 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 `<class:ERB>'
/home/jeff/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/actionpack-3.0.3/lib/action_view/template/handlers/erb.rb:70:in `<module:Handlers>'
/home/jeff/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/actionpack-3.0.3/lib/action_view/template/handlers/erb.rb:28:in `<class:Template>'
/home/jeff/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/actionpack-3.0.3/lib/action_view/template/handlers/erb.rb:27:in `<module:ActionView>'
/home/jeff/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/actionpack-3.0.3/lib/action_view/template/handlers/erb.rb:6:in `<top (required)>'
/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 `<class:Template>'
/home/jeff/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/actionpack-3.0.3/lib/action_view/template.rb:8:in `<module:ActionView>'
/home/jeff/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/actionpack-3.0.3/lib/action_view/template.rb:6:in `<top (required)>'
<internal:lib/rubygems/custom_require>:29:in `require'
<internal:lib/rubygems/custom_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 `<top (required)>'
<internal:lib/rubygems/custom_require>:29:in `require'
<internal:lib/rubygems/custom_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 `<top (required)>'
<internal:lib/rubygems/custom_require>:29:in `require'
<internal:lib/rubygems/custom_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 `<top (required)>'
<internal:lib/rubygems/custom_require>:29:in `require'
<internal:lib/rubygems/custom_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 `<top (required)>'
<internal:lib/rubygems/custom_require>:33:in `require'
<internal:lib/rubygems/custom_require>:33:in `rescue in require'
<internal:lib/rubygems/custom_require>:29:in `require'
/home/jeff/Projects/Rails/vahsfbhistory/spec/spec_helper.rb:10:in `block in <top (required)>'
/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 `<top (required)>'
/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 `<top (required)>'
/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 `<main>'

有谁知道这可能是什么原因造成的?

4

4 回答 4

26

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

require "rails"

require "rails/all"

在我的情况下工作。

于 2011-12-21T04:23:07.720 回答
11

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

require File.expand_path("../../config/environment", __FILE__)
于 2015-08-28T13:15:40.650 回答
0

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

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

相反,您可以通过以下方式解决此问题:

require "action_controller/railtie"

于 2017-10-20T15:52:49.967 回答
-1

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

require 'action_view'
于 2015-02-26T22:46:33.083 回答