簡體   English   中英

無法運行 RSpec(未初始化的常量用戶(NameError)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM