突然每当我运行'rake test'或'捆绑exe rake test'时,我都会收到以下错误。
NameError: uninitialized constant FactoryGirl
在有人告诉我将require 'factory_girl'
添加到我的test_helper.rb
文件之前,同一个更新的分支正在另一台计算机上运行测试而没有任何问题。
我还是尝试添加require 'factory_girl'
。然后它引发了另一个错误NameError: uninitialized constant Faker
,所以我添加了require 'faker'
并且总是需要它,并且该项目的测试总是正常工作而没有所有这些要求。
可能有用的信息:
错误包括跟踪:
** 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
有任何线索吗?
答案 0 :(得分:0)
好的,所以当我放弃时,我发现了问题。
tl; dr:必须从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来运行某些任务,但是无论什么时候都无法找到它正在运行的环境,所以我在{{1}中使用了RAILS_ENV = development文件。
因此,即使.rbenv-vars
在开发环境中运行,我也不知道为什么会发生这种情况。