[英]Failing to run RSpec (uninitialized constant User (NameError)
試圖運行 bundle exec rspec spec/models/user_spec.rb 但未能執行(見下面的錯誤)。
user_spec.rb 的內容:
require 'rails_helper'
describe User do
pending "add some examples to (or delete) #{__FILE__}"
end
如果我刪除最后 3 行,則它完成 0 個示例和 0 個失敗。 但是,當出現最后 3 行時,會生成錯誤
/spec/models/user_spec.rb:4:in `<top (required)>': uninitialized constant User (NameError)
from /var/lib/gems/1.9.1/gems/rspec-core-3.0.3/lib/rspec/core/configuration.rb:1057:in `load'
from /var/lib/gems/1.9.1/gems/rspec-core-3.0.3/lib/rspec/core/configuration.rb:1057:in `block in load_spec_files'
from /var/lib/gems/1.9.1/gems/rspec-core-3.0.3/lib/rspec/core/configuration.rb:1057:in `each'
from /var/lib/gems/1.9.1/gems/rspec-core-3.0.3/lib/rspec/core/configuration.rb:1057:in `load_spec_files'
from /var/lib/gems/1.9.1/gems/rspec-core-3.0.3/lib/rspec/core/runner.rb:97:in `setup'
from /var/lib/gems/1.9.1/gems/rspec-core-3.0.3/lib/rspec/core/runner.rb:85:in `run'
from /var/lib/gems/1.9.1/gems/rspec-core-3.0.3/lib/rspec/core/runner.rb:70:in `run'
from /var/lib/gems/1.9.1/gems/rspec-core-3.0.3/lib/rspec/core/runner.rb:38:in `invoke'
from /var/lib/gems/1.9.1/gems/rspec-core-3.0.3/exe/rspec:4:in `<top (required)>'
from /usr/local/bin/rspec:23:in `load'
from /usr/local/bin/rspec:23:in `<main>'
當這實際上是一個模型時,它似乎不知道 User 是什么並將其視為常量。 我已經在 ruby 沙箱中驗證了我可以在數據庫中創建新用戶。 有任何想法嗎?
答:從 .rspec 中刪除 --warnings 后(謝謝 kirti),當前錯誤是關於水豚版本太低(需要 2.2)。 安裝最新版本(修改 gemfile 和 bundle install)后,rspec 似乎正在正確執行。 謝謝大家的意見。
我有同樣的問題,這是由於rspec/rails_helper.rb
沒有在任何地方被調用。
我將它添加到.rspec
文件中,所以我的文件看起來像這樣
--color
--require spec_helper
--require rails_helper
這並在spec/spec_helper.rb
向 false 添加警告為我解決了這個問題!
config.warnings = false
從 .rspec 中刪除 --warnings 后(謝謝 kirti),當前錯誤是關於水豚版本太低(需要 2.2)。 安裝最新版本(修改 gemfile 和 bundle install)后,rspec 似乎正在正確執行。 謝謝大家的意見。
對我來說,問題是類的名稱由於它在另一個命名空間中而沒有被正確調用。 例如,我有:
RSpec.describe User do
# ... some tests
end
我應該有的地方
RSpec.describe MyModule::User do
# ... some tests
end
因為用戶類是用MyModule
模塊定義的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.