2017-10-12 14 views
0

これは非常に一般的な問題ですが、まだ解決できません。ArgumentError:工場未登録 - Rails 5

私はスペック/工場/ users.rbで、(私は工夫を使用)、ユーザーファクトリを作成します。

FactoryGirl.define do 
    factory :user do 
    first_name "Jonas" 
    last_name "Sniegas" 
    email "[email protected]" 
    password "asdfasdf" 
    password_confirmation "asdfasdf" 
    end 
end 

とテストコンソール(rails c -e test)からそれを作成しよう:

FactoryGirl.create(:user)

そして:

ArgumentError: Factory not registered: user from /Users/user/.rvm/gems/ruby-2.3.0/gems/factory_girl-4.7.0/lib/factory_girl/registry.rb:24:in find' from /Users/user/.rvm/gems/ruby-2.3.0/gems/factory_girl-4.7.0/lib/factory_girl/decorator.rb:10:in method_missing' from /Users/user/.rvm/gems/ruby-2.3.0/gems/factory_girl-4.7.0/lib/factory_girl.rb:85:in factory_by_name' from /Users/user/.rvm/gems/ruby-2.3.0/gems/factory_girl-4.7.0/lib/factory_girl/factory_runner.rb:12:in run' from /Users/user/.rvm/gems/ruby-2.3.0/gems/factory_girl-4.7.0/lib/factory_girl/strategy_syntax_method_registrar.rb:20:in block in define_singular_strategy_method' from (irb):1 from /Users/user/.rvm/gems/ruby-2.3.0/gems/railties-5.0.6/lib/rails/commands/console.rb:65:in start' from /Users/user/.rvm/gems/ruby-2.3.0/gems/railties-5.0.6/lib/rails/commands/console_helper.rb:9:in start' from /Users/user/.rvm/gems/ruby-2.3.0/gems/railties-5.0.6/lib/rails/commands/commands_tasks.rb:78:in console' from /Users/user/.rvm/gems/ruby-2.3.0/gems/railties-5.0.6/lib/rails/commands/commands_tasks.rb:49:in run_command!' from /Users/user/.rvm/gems/ruby-2.3.0/gems/railties-5.0.6/lib/rails/commands.rb:18:in ' from /Users/user/.rvm/gems/ruby-2.3.0/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:293:in require' from /Users/user/.rvm/gems/ruby-2.3.0/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:293:in block in require' from /Users/user/.rvm/gems/ruby-2.3.0/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:259:in load_dependency' from /Users/user/.rvm/gems/ruby-2.3.0/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:293:in require' from /Users/user/Desktop/Ruby/Test/bin/rails:9:in <top (required)>' from /Users/user/.rvm/gems/ruby-2.3.0/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:287:in load' from /Users/user/.rvm/gems/ruby-2.3.0/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:287:in block in load' from /Users/user/.rvm/gems/ruby-2.3.0/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:259:in load_dependency' from /Users/user/.rvm/gems/ruby-2.3.0/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:287:in load' from /Users/user/.rvm/rubies/ruby-2.3.0/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in require' from /Users/user/.rvm/rubies/ruby-2.3.0/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'

Gemfile:スペック/ factories.rb -

source 'https://rubygems.org' 

git_source(:github) do |repo_name| 
    repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/") 
    "https://github.com/#{repo_name}.git" 
end 

gem 'rails', '~> 5.0.3' 
gem 'pg', '~> 0.18' 
gem 'puma', '~> 3.0' 
gem 'sass-rails', '~> 5.0' 
gem 'uglifier', '>= 1.3.0' 
gem 'coffee-rails', '~> 4.2' 

gem 'jquery-rails' 
gem 'turbolinks', '~> 5' 
gem 'jbuilder', '~> 2.5' 
gem 'sdoc', '~> 0.4.0', group: :doc 


group :development, :test do 
    gem 'byebug', platform: :mri 
    gem 'rspec-rails', '~> 3.0' 
    gem 'factory_girl_rails' 
    gem 'capybara' 
    gem 'database_cleaner' 
end 

group :development do 

    gem 'web-console', '>= 3.3.0' 
    gem 'listen', '~> 3.0.5' 

    gem 'spring' 
    gem 'spring-watcher-listen', '~> 2.0.0' 
end 

gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby] 

gem 'devise', '~> 4.2' 
gem 'bootstrap-sass', '~> 3.3', '>= 3.3.6' 
は、私はまた、スペック/ rails_helper.rbで before doブロックに FactoryGirl.find_definitionsを追加し、1つのファイルにすべての工場を指定しようとしました。何も動作しないようです..

これに関する助け?

答えて

0

問題は春でした...停止する必要がありました - spring stop

すべて正常です。この回答を残しておきたいのは、多くの質問と回答があったので、誰もプリローダーを止めることを勧めていませんでした。...

+1

rspecをコマンドラインから実行するときは、一緒に 'DISABLE_SPRING = true' 'bundle exec rspec'を実行して、再度起動しないようにします。 – seanriordan08

+1

残念ながら、「異常なことが起きているときは、春を再開してください」というメッセージを追加する必要があります。 –