困惑 - spec_helper.rb:94:in `<top (required)>': 未初始化的常量应该 (NameError)

zky*_*ony 5 rspec ruby-on-rails shoulda mongoid

我正在使用 Rails 4 和 Mongoid 4 开发一个项目。我正在尝试设置 Shoulda- matchers(版本 2.8.0),遵循thoughtbot/should-matchers,它指向另一个名为README for 2.8.0 的自述文件。我希望使用mongoid-rspec进行测试。

但是我不断得到spec_helper.rb:94:in '<top (required)>': uninitialized constant Shoulda (NameError)

我在Gemfile以下内容中添加了这个:跟随thoughtbot/shouda-matchers

group :test do
  gem 'shoulda-matchers'
end
Run Code Online (Sandbox Code Playgroud)

我还添加了spec_helper.rb(这是错误的来源)-关注thoughtbot/should-matchers

Shoulda::Matchers.configure do |config|
  config.integrate do |with|
    with.test_framework :rspec
    with.library :rails
  end
end
Run Code Online (Sandbox Code Playgroud)

我试过谷歌搜索,但没有直接的解决方案(或者没有直接的问题)。我require: false在 Gemfile 中添加,遵循2.8.0 的自述文件

group :test do
  gem 'shoulda-matchers', require: false
end
Run Code Online (Sandbox Code Playgroud)

require 'shoulda/matchers'rails_helper.rb. 我的“要求”顺序是这样的:

require 'spec_helper'
require 'rspec/rails'
require 'shoulda/matchers'
Run Code Online (Sandbox Code Playgroud)

默认情况下,require 'rspec/rails' 低于 require 'spec_helper'。根据 github 页面上提供的README,我应该放在shoulda\matcher'rspec/rails' 下方。我也试过require 'shoulda/matchers'放在上面,require 'spec_helper'但没有用。

我的版本:

Rails 4.2.1
Ruby 2.2.1
Mongoid ~ 4.0.0
rspec-rails ~ 3.0
mongoid-rspec ~ 2.1.0
shoulda-matchers 2.8.0
Run Code Online (Sandbox Code Playgroud)

我真的很感激任何帮助。

zet*_*tic 5

从您提供的链接:

注意:新的配置语法尚未在公开版本中提供——请参阅 2.8.0 的自述文件以获取当前安装说明。

该注释来自主分支。当前版本 (2.8.0) 有一组不同的文档。令人困惑,我知道。

只需从中删除该配置部分spec/spec_helper.rb,所有内容都应该再次成为彩虹和独角兽。