ruby-on-rails - NameError:未初始化的常量应该
问题描述
我做这个教程 https://www.digitalocean.com/community/tutorials/build-a-restful-json-api-with-rails-5-part-one
但是在模型章节运行 RSpec 测试时,我收到以下错误。
C:\Users\NCH-Lap10\Desktop\rubyprojects\todos-api>bundle exec rspec
An error occurred while loading ./spec/controllers/items_controller_spec.rb.
Failure/Error:
Shoulda::Matchers.configure do |config|
config.integrate do |with|
with.test_framework :rspec
with.library :rails
end
end
NameError:
uninitialized constant Shoulda
# ./spec/rails_helper.rb:6:in `<top (required)>'
# ./spec/controllers/items_controller_spec.rb:1:in `require'
# ./spec/controllers/items_controller_spec.rb:1:in `<top (required)>'
An error occurred while loading ./spec/controllers/todos_controller_spec.rb.
Failure/Error:
Shoulda::Matchers.configure do |config|
config.integrate do |with|
with.test_framework :rspec
with.library :rails
end
end
NameError:
uninitialized constant Shoulda
# ./spec/rails_helper.rb:6:in `<top (required)>'
# ./spec/controllers/todos_controller_spec.rb:1:in `require'
# ./spec/controllers/todos_controller_spec.rb:1:in `<top (required)>'
An error occurred while loading ./spec/models/item_spec.rb.
所以他没有找到我的测试。(我从教程中复制了它们)
我的测试位于规格/模型中,看起来像:
require 'rails_helper'
# Test suite for the Item model
RSpec.describe Item, type: :model do
# Association test
# ensure an item record belongs to a single todo record
it { should belong_to(:todo) }
# Validation test
# ensure column name is present before saving
it { should validate_presence_of(:name) }
end
我的 Gemfile 的一部分:
group :test do
gem 'factory_bot_rails', '~> 4.0'
gem 'shoulda-matchers', '~> 3.1'
gem 'faker'
gem 'database_cleaner'
end
我应该提供更多代码吗?
解决方案
根据github上的这个问题,
您可能希望将此添加到您的spec_helper.rb
:
require "shoulda/matchers"
require "shoulda/matchers/integrations/rspec"
此外,请确保它spec_helper
是必需的rails_helper
(并且rails_helper
在您的测试文件中是必需的)。
为未来的读者编辑:最近的 Rails 版本中可能不推荐使用第二行(请参阅评论),所以不要添加它
推荐阅读
- java - Excel 工作表删除以零开头的数字的零
- r - 从 Shiny UI 更改变量类
- c++ - QFile + QTextStream 只读文件的一部分
- vba - 无法在 Microsoft Outlook VBA 中使用 EmailOptions 属性
- android - 错误:找不到符号类 RNFirebaseAdMobPackage
- html - 在 html 文件中添加并执行 xml 标签
- javascript - 使用带有多个数据数组的图表创建图表
- reactjs - 尝试在 React JS 中使用 onclick 更改文本
- java - 办理合同;将子包类中的函数设为私有
- azure - 强制标记到 azure databricks 工作区