Rspec测试加载错误:无法加载文件-- spec_helper(LoadError)

6
我正在学习关于 RSpec 测试的一章,但我一直遇到一个“加载错误”。
首先它告诉我创建一个新的分支,然后创建两个新的目录:Models 和 Spec。在这些目录中,我需要创建两个文件;models/entry.rb 和 spec/entry_spec.rb。在 spec/entry_spec.rb 文件中,我需要输入以下代码:
require_relative '../models/entry'


RSpec.describe Entry do

end

然后在我的models/entry.rb文件中,我应该放置这段代码:
class Entry

end

我接下来需要运行这个终端命令:

$ rspec spec/entry_spec.rb

并获得以下结果:
No examples found.

Finished in 0.00015 seconds (files took 0.1186 seconds to load)
0 examples, 0 failures

但是我总是遇到这个加载错误,而且我不知道它是什么意思。

/Users/ethanfranson/.rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require': cannot load such file -- spec_helper (LoadError)
    from /Users/ethanfranson/.rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
    from /Users/ethanfranson/.rvm/gems/ruby-2.2.1/gems/rspec-core-3.4.2/lib/rspec/core/configuration.rb:1295:in `block in requires='
    from /Users/ethanfranson/.rvm/gems/ruby-2.2.1/gems/rspec-core-3.4.2/lib/rspec/core/configuration.rb:1295:in `each'
    from /Users/ethanfranson/.rvm/gems/ruby-2.2.1/gems/rspec-core-3.4.2/lib/rspec/core/configuration.rb:1295:in `requires='
    from /Users/ethanfranson/.rvm/gems/ruby-2.2.1/gems/rspec-core-3.4.2/lib/rspec/core/configuration_options.rb:109:in `block in process_options_into'
    from /Users/ethanfranson/.rvm/gems/ruby-2.2.1/gems/rspec-core-3.4.2/lib/rspec/core/configuration_options.rb:108:in `each'
    from /Users/ethanfranson/.rvm/gems/ruby-2.2.1/gems/rspec-core-3.4.2/lib/rspec/core/configuration_options.rb:108:in `process_options_into'
    from /Users/ethanfranson/.rvm/gems/ruby-2.2.1/gems/rspec-core-3.4.2/lib/rspec/core/configuration_options.rb:21:in `configure'
    from /Users/ethanfranson/.rvm/gems/ruby-2.2.1/gems/rspec-core-3.4.2/lib/rspec/core/runner.rb:105:in `setup'
    from /Users/ethanfranson/.rvm/gems/ruby-2.2.1/gems/rspec-core-3.4.2/lib/rspec/core/runner.rb:92:in `run'
    from /Users/ethanfranson/.rvm/gems/ruby-2.2.1/gems/rspec-core-3.4.2/lib/rspec/core/runner.rb:78:in `run'
    from /Users/ethanfranson/.rvm/gems/ruby-2.2.1/gems/rspec-core-3.4.2/lib/rspec/core/runner.rb:45:in `invoke'
    from /Users/ethanfranson/.rvm/gems/ruby-2.2.1/gems/rspec-core-3.4.2/exe/rspec:4:in `<top (required)>'
    from /Users/ethanfranson/.rvm/gems/ruby-2.2.1/bin/rspec:23:in `load'
    from /Users/ethanfranson/.rvm/gems/ruby-2.2.1/bin/rspec:23:in `<main>'
    from /Users/ethanfranson/.rvm/gems/ruby-2.2.1/bin/ruby_executable_hooks:15:in `eval'
    from /Users/ethanfranson/.rvm/gems/ruby-2.2.1/bin/ruby_executable_hooks:15:in `<main>'

如果有人能花时间帮助我解决问题,告诉我我可能做错了什么,我会非常感激。对于这个冗长的问题,我表示抱歉!

你有spec_helper文件吗? - x6iae
1
你是从哪个目录运行规格测试的?应用程序的根目录还是规格目录? - harshs08
2个回答

4
请确保您从应用程序目录的根目录而非spec目录中运行rspec spec/entry_spec.rb。Rspec会自动将spec添加到加载路径中。如果您已经在spec目录中,那么rspec将会添加spec/spec到加载路径中。

嘿,谢谢你的回答。我也是无意中这样做的。所以感谢你让我更接近目标,我真的很感激! - Ethan Franson

2

首先确保您已正确安装rspec-rails:

rails g rspec:install

您无需要求模型文件或任何其他文件在 /app 中,它们会在您要求 rails_helper 时自动加载。

# spec/models/entry_spec.rb
require 'rails_helper'
RSpec.describe Entry do

end

RSpec可以使用以下代码为您生成此规范:
rails generate rspec:model entry

您还应该在config/application.rb中设置生成器:

# ...
config.generators do |g|
  g.test_framework :rspec
end

这样,当你运行常规的Rails生成器Rspec,例如rails g model entry,它也会为你创建规范文件。

请注意,在旧版本的rspec-rails中,您需要require 'spec_helper',而在当前版本中,您应该使用require 'rails_helper',因为它将一般的RSpec配置和rails设置分成两个独立的文件。


嗨Max,我有一个问题。有人克隆了我的repo,在他们的电脑上运行测试,rspec测试成功了。但是当我完全重新安装了rvm、ruby和rails后,仍然出现相同的错误。即使尝试了你建议的方法,我仍然得到相同的错误。所以你认为我电脑上可能安装了一些奇怪的东西或者没有安装某些必要的东西导致它无法正常工作吗?顺便说一句,谢谢你的迅速回答! - Ethan Franson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接