ChatGPT解决这个技术问题 Extra ChatGPT

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

我正在尝试为 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)

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

gem list --local rspec 的输出是什么? rspec-rails 在几个版本中进行了不兼容的更改,这可能会让您感到厌烦,因为您没有使用 bundle exec 或 binstubs。旧版本仅使用、生成和需要 spec_helper;较新的版本使用、生成并需要一个 spec_helper 和一个 rails_helper。如果你混合版本(这可能是这里发生的事情),事情就会中断。
它是: $ gem list --local rspec *** LOCAL GEMS *** rspec-core (2.13.1) rspec-expectations (2.13.0) rspec-mocks (2.13.1) rspec-rails (2.13.1)你能从这个列表中看出问题所在吗?关于下一步的任何建议?
运行规范时,请确保您位于正确的目录中。

D
Dipak Gupta

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

改变

require 'rails_helper'

require 'spec_helper'

其他描述在这里https://teamtreehouse.com/forum/problem-with-rspec

对于 V3:

如果有人使用 rspec V3,则在生成器未运行时会发生类似的错误。所以在尝试任何东西之前运行生成器。

rails generate rspec:install

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


C
Community

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

rails generate rspec:install

我还必须从 .rspec 中删除 warnings,因为 stated by one of rpsec developers


令人惊讶的是,这对我有用。我认为这不适用,因为我已经运行了生成器。这个 Q/A 也帮助了我:stackoverflow.com/questions/17507416/…
D
Daniel Loureiro

对我来说,问题是由于加载和激活了不同的“rspec-support”版本。我通过添加“bundle exec”来解决:

bundle exec rspec

H
Hans Araya

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

rspec --init

创建 .rspecspec/spec_helper.rb

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


L
Leandro Castro

永远记得从项目的根目录运行 rspecbundle exec rspec。就像是:

bundle exec rspec spec/features/file_test_spec.rb

这对我有用,rails 5
D
Dhivya Dandapani

请安装以下gem:

gem install 'rspec-rails'

然后运行:rails generate rspec:install

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


t
toki

有时您需要从项目的父目录运行 rspec 命令


m
mycargus

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

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

require 'rails_helper'
require 'spec_helper'

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


d
daveharris

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

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

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

修复就像删除那条线一样简单。希望这可以帮助其他人解决同样的问题!


获取 .../2.4.0/gems/rspec-core-3.7.1/lib/rspec/core/configuration.rb:1455:in require':无法加载此类文件 -- Rails 5 中的 rails_helper (LoadError)`
A
Anthony Dreessen

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


t
thedanotto

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

rake db:test:prepare


这也是一个很好的答案。如果您之前运行过测试套件没有问题并且出现此错误,请尝试此操作,而不是修改您的测试配置。对于铁轨 > 4.0 使用:rails db:test:prepare 而不是 rake。两者都可以,但现在使用 rails 关键字是首选方式。
s
stevenspiel

您的文件也可能命名不正确。确保它以 _spec.rb 结尾。我把我的文件拼错了,以 _soec.rb 结尾,我摸不着头脑……


R
Ryosuke Hujisawa

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

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