Capybara 2.1错误未初始化的常量Rails(NameError)

Gle*_*ita 18 rspec capybara rspec-rails ruby-on-rails-3.2

我刚刚将我的Capybara Gem从版本1升级到2.1.0(最新版).基于Capybara自述文件,我将以下几行添加到Spork.prefork块中的spec_helper.rb

require 'capybara/rspec'
require 'capybara/rails'
Run Code Online (Sandbox Code Playgroud)

但是,我收到了一个错误

/home/user_1/.rvm/gems/ruby-1.9.3-p392/gems/capybara-2.1.0/lib/capybara/rails.rb:6:in `block (2 levels) in <top (required)>': uninitialized constant Rails (NameError)
Run Code Online (Sandbox Code Playgroud)

我是否因为水豚的工作正常而错过了什么?

bow*_*ior 18

确保首先需要'rspec/rails':

require 'rspec/rails'

require 'capybara/rspec'
require 'capybara/rails'
Run Code Online (Sandbox Code Playgroud)

如果您首先需要'capybara/rails',您将收到该错误.


cjn*_*cjn 9

spec_helper.rb文件中,可能会因添加require 'capybara/rails'文件代码顶部的行而导致此错误.

相反,如果您查看自动生成的spec_helper.rb文件的一半,您将看到如下内容:

ENV["RAILS_ENV"] ||= 'test'
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
require 'rspec/autorun'
Run Code Online (Sandbox Code Playgroud)

require 'capybara/rails'在这些行之后添加行,使其看起来像:

ENV["RAILS_ENV"] ||= 'test'
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
require 'rspec/autorun'
require 'capybara/rails' #######
Run Code Online (Sandbox Code Playgroud)

(你不需要哈希,那只是为了突出插入位置)

希望这可以帮助你或其他人...