2017-06-06 55 views
0

突然,当我运行'rake test'或'bundle exe rake test'时,出现以下错误。Rails测试似乎没有加载任何类,NameError:未初始化的常量

NameError: uninitialized constant FactoryGirl 

之前有人告诉我补充require 'factory_girl'test_helper.rb文件,同样更新的分支运行测试,而在另一台计算机上的任何问题。

不过我试过加require 'factory_girl'。然后它提出了另一个错误,说NameError: uninitialized constant Faker,所以我加了require 'faker',总是有它需要的东西,而且这个项目的测试总是能正常工作,没有所有这些要求。

信息,可能是有用的:

  • 的Ubuntu 16.10
  • 的Rails 5.1.1
  • 的Ruby 2.3.3(使用rbenv)
  • 我使用MINITEST,不RSPEC

Error bracktrace:

** Invoke test (first_time) 
** Execute test 
rake aborted! 
NameError: uninitialized constant FactoryGirl 
/home/samir/Projects/Tuuris/test/test_helper.rb:10:in `<top (required)>' 
/home/samir/Projects/Tuuris/test/controllers/admin_controller_test.rb:1:in `<top (required)>' 
/home/samir/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/railties-5.1.1/lib/rails/test_unit/test_requirer.rb:14:in `block in require_files' 
/home/samir/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/railties-5.1.1/lib/rails/test_unit/test_requirer.rb:13:in `each' 
/home/samir/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/railties-5.1.1/lib/rails/test_unit/test_requirer.rb:13:in `require_files' 
/home/samir/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/railties-5.1.1/lib/rails/test_unit/minitest_plugin.rb:67:in `rake_run' 
/home/samir/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/railties-5.1.1/lib/rails/test_unit/testing.rake:14:in `block in <top (required)>' 
/home/samir/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/rake-12.0.0/lib/rake/task.rb:250:in `block in execute' 
/home/samir/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/rake-12.0.0/lib/rake/task.rb:250:in `each' 
/home/samir/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/rake-12.0.0/lib/rake/task.rb:250:in `execute' 
/home/samir/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/rake-12.0.0/lib/rake/task.rb:194:in `block in invoke_with_call_chain' 
/home/samir/.rbenv/versions/2.3.3/lib/ruby/2.3.0/monitor.rb:214:in `mon_synchronize' 
/home/samir/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/rake-12.0.0/lib/rake/task.rb:187:in `invoke_with_call_chain' 
/home/samir/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/rake-12.0.0/lib/rake/task.rb:180:in `invoke' 
/home/samir/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/rake-12.0.0/lib/rake/application.rb:152:in `invoke_task' 
/home/samir/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/rake-12.0.0/lib/rake/application.rb:108:in `block (2 levels) in top_level' 
/home/samir/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/rake-12.0.0/lib/rake/application.rb:108:in `each' 
/home/samir/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/rake-12.0.0/lib/rake/application.rb:108:in `block in top_level' 
/home/samir/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/rake-12.0.0/lib/rake/application.rb:117:in `run_with_threads' 
/home/samir/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/rake-12.0.0/lib/rake/application.rb:102:in `top_level' 
/home/samir/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/rake-12.0.0/lib/rake/application.rb:80:in `block in run' 
/home/samir/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/rake-12.0.0/lib/rake/application.rb:178:in `standard_exception_handling' 
/home/samir/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/rake-12.0.0/lib/rake/application.rb:77:in `run' 
/home/samir/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/rake-12.0.0/exe/rake:27:in `<top (required)>' 
/home/samir/.rbenv/versions/2.3.3/bin/rake:22:in `load' 
/home/samir/.rbenv/versions/2.3.3/bin/rake:22:in `<main>' 
Tasks: TOP => test 

任何线索?

+1

你在使用'bundle'吗?你在'Gemfile'中有'factory_girl'吗? – yorodm

+0

是的,'捆绑'运行良好。测试组中有'factory_girl','faker'和其他宝石。就像我说的,测试在另一台电脑上运行良好。我甚至用rbenv删除了ruby 2.3.3,并重新安装了ruby 2.3.3,并安装了所有的宝石。我仍然有同样的错误。 :/ –

+0

完整性检查:运行'bundle exec rspec' –

回答

0

好的,所以当我放弃的时候,我已经发现了这个问题。

TL;博士:必须从删除RAILS_ENV=development.rbenv-vars

完整回答:

测试宝石是一组中仅在测试环境中像这样运行:

group :test do 
    # Call 'byebug' anywhere in the code to stop execution and get a debugger console 
    gem 'byebug', platform: :mri 
    gem 'faker' 
    gem 'cpf_faker' 
    gem 'factory_girl' 
    gem 'capybara' 
    gem 'minitest-capybara' 
    gem 'poltergeist' 
    gem "capybara-webkit" 
    gem 'selenium-webdriver' 
    gem 'minitest-rails' 
end 

事情是......我每天都用gem来运行一些任务,但是无论何时无法找到它正在运行的环境,所以我在我的.rbenv-vars文件中使用RAILS_ENV = development。

因此,即使rake test正在开发环境上运行,我不知道为什么允许这种情况发生。

相关问题