尝试运行rspec时出错:`require':无法加载此类文件 - rails_helper(LoadError)

时间:2014-09-12 03:07:05

标签: ruby-on-rails command-line rspec

我正在尝试为Ruby on Rails运行rspec。我正在运行Rails 4.1.1。我已经安装了gem,已经建立了一些带有一些测试的spec文件夹。我已经通过$ rails g rspec:install

创建了一个目录

我尝试通过$ rake db:test:prepare创建一个测试数据库,但它会抛出此错误消息:

WARNING: db:test:prepare is deprecated. The Rails test helper now maintains your test 
schema automatically, see the release notes for details.

所以我最后看了this stack overflow post,在两个选项中,有效的是:

rake db:schema:load RAILS_ENV=test 

所以,现在我需要运行rspec

当我从命令行运行$ rspec spec时,出现此错误:

/Users/myname/.rbenv/versions/2.1.1/lib/ruby/2.1.0/rubygems/core_ext/
kernel_require.rb:55:in `require': cannot load such file -- rails_helper (LoadError)

如何解决这个问题,以便我可以开始运行测试?

13 个答案:

答案 0 :(得分:69)

rspec V3存在一些问题。但在你的情况下,你使用的是V2。

更改

require 'rails_helper'

require 'spec_helper'

其他说明在此处https://teamtreehouse.com/forum/problem-with-rspec

对于V3:

如果有人使用rspec V3,那么当发电机未运行时会发生类似的错误。所以在尝试之前先运行发电机。

rails generate rspec:install

如果您在控制台上收到大量警告。然后,您需要从--warnings文件中删除.rspec

答案 1 :(得分:58)

我实际上在使用rspec 3的rails 4上遇到了这个错误,但在我的情况下我忘了运行生成器:

rails generate rspec:install

此外,我必须从warnings移除.rspecstated by one of rpsec developers

答案 2 :(得分:8)

对我来说,问题是由于加载并激活了不同的“rspec-support”版本。我解决了前缀“捆绑exec”:

bundle exec rspec

答案 3 :(得分:5)

对于较新版本(3.5),如果您需要运行生成器,rails generate rspec:install对我不起作用。我用过:

rspec --init

创建.rspecspec/spec_helper.rb

编辑: 为了以防万一,我发现我为ruby安装了rspec gem,而不是Rails的那个,所以rspec:install不可用。应该使用https://github.com/rspec/rspec-rails

答案 4 :(得分:3)

我遇到了同样的错误,但在任何地方都没有rails_helper的引用,我们甚至没有使用rails。

但是,我最终发现我的~/.rspec需要rails_helper(可能是因为过去创建了rails应用程序),这导致了这个问题......

$ cat ~/.rspec
--color
--format documentation
--require spec_helper
--require rails_helper

修复就像删除该行一样简单。希望这有助于其他人解决同样的问题!

答案 5 :(得分:2)

对我有用的一种可能性是确保您需要spec_helper。 RubyMine可以默认需要rspec,这有时会导致此错误。

答案 6 :(得分:2)

有时您需要从Project的父目录

运行rspec命令

答案 7 :(得分:2)

这些建议都不适用于使用rspec-rails 3.2.3的Rails 4.2.0。

相反,我将以下两行放在spec文件的顶部:

require 'rails_helper'
require 'spec_helper'

现在我可以执行rspec spec/features/my_spec.rb

答案 8 :(得分:1)

请安装以下gem:

gem install 'rspec-rails'

然后运行: rails generate rspec:install

这将生成spec文件夹以及 rails_helper.rb spec_helper.rb 。完成此操作后,应注意您的错误。

答案 9 :(得分:0)

我在运行控制器测试时遇到了您所描述的错误。但是,当我运行模型测试时,我得到了真正的错误。它最终说错误发生是因为我的数据库没有迁移。我通过运行此命令来修复错误...

rake db:test:prepare

答案 10 :(得分:0)

您的文件命名也可能不正确。确保它以_spec.rb结尾。我的文件拼写错误以_soec.rb结尾,并且挠了一下头……

答案 11 :(得分:0)

给某人。如果您在尝试测试特定文件时遇到该错误。您可能会喜欢这样

$ bundle exec rspec ./spec/features/user_login_spec.rb
$ bundle exec rspec ./spec/models/user_login_spec.rb

答案 12 :(得分:0)

始终记得运行 rspec或项目根目录中的bundle exec rspec。 像这样:

bundle exec rspec spec/features/file_test_spec.rb