我正在尝试为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)
我如何解决这个问题,以便我可以开始运行测试?
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
。
您可能还错误地命名了文件。确保它以_spec.rb
结束。我拼错了我的档案,以_soec.rb
结束,我的头搔了一会儿......
给某人。如果在尝试测试特定文件时遇到错误。你可能会喜欢这个
$ bundle exec rspec ./spec/features/user_login_spec.rb
$ bundle exec rspec ./spec/models/user_login_spec.rb
永远记得从项目的根目录运行rspec
或bundle exec rspec
。就像是:
bundle exec rspec spec/features/file_test_spec.rb
我实际上只是在带有rspec 3的rails 4上出现了这个错误,但在我的情况下我忘了运行生成器:
rails generate rspec:install
另外,我不得不从warnings
中删除.rspec
,作为stated by one of rpsec developers
对我来说,问题是由于加载和激活了不同的“rspec-support”版本。我解决了前缀“捆绑exec”:
bundle exec rspec
对于较新的版本(3.5),如果您需要运行生成器,rails generate rspec:install
对我不起作用。我用了:
rspec --init
创建.rspec
和spec/spec_helper.rb
。
编辑:以防万一,我发现我为ruby安装了rspec gem,而不是Rails的那个,所以rspec:install不可用。应该使用https://github.com/rspec/rspec-rails。
我有同样的错误,但没有任何地方参考rails_helper
我们甚至没有使用rails。
然而,我最终发现我的~/.rspec
需要rails_helper
(大概是从过去创建rails应用程序),这导致了这个问题......
$ cat ~/.rspec
--color
--format documentation
--require spec_helper
--require rails_helper
修复就像删除该行一样简单。希望这有助于其他人解决同样的问题!
对我有用的一种可能性是确保你需要spec_helper
。 RubyMine可以默认需要rspec
,这有时会导致此错误。
有时您需要从Project的父目录运行rspec命令
在使用rspec-rails 3.2.3的Rails 4.2.0上,这些建议都不适用于我。
相反,我将以下两行放在我的spec文件的顶部:
require 'rails_helper'
require 'spec_helper'
现在我可以执行rspec spec/features/my_spec.rb
了。
我在运行控制器测试时遇到了您所描述的错误。但是,当我运行模型测试时,我得到了真正的错误。它最终说错误发生是因为我的数据库没有迁移。我通过运行此命令修复了错误...
rake db:test:prepare