web-dev-qa-db-fra.com

Usine non enregistrée: utilisateur

Je suis le tutoriel de Michal Hartls Rails Chapitre 7. J'ai installé le gem Factory Girl. Je continue à avoir cette erreur lorsque je lance mon test

Failures:

 1) UsersController GET 'show' should be successful
     Failure/Error: @user = FactoryGirl.create(:user)
     ArgumentError:
       Factory not registered: user
     # ./spec/controllers/users_controller_spec.rb:10:in `block (3 levels) in <top (required)>'

Finished in 0.66336 seconds 42 examples, 1 failure

Failed examples:

rspec ./spec/controllers/users_controller_spec.rb:14 # UsersController GET 'show' should be successful

Gemfile

group :test do
  gem 'autotest', '4.4.6'
  gem "autotest-growl", "~> 0.2.16"
  gem "autotest-Rails", "~> 4.1.2"
  gem "rspec", "~> 2.9.0"
  gem 'rspec-Rails',  '2.9.0'
  gem 'webrat', '0.7.3'
  gem "spork",  '0.9.0'
  gem 'annotate', '~> 2.4.1.beta'
  gem "factory_girl", "~> 3.2.0"
end
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
gem 'therubyracer', :platform =>

Mon user_controller_spec.rb est

require 'spec_helper'

describe UsersController do

  render_views

  describe "GET 'show'" do
    before(:each) do
    @user = FactoryGirl.create(:user)
    end

    it "should be successful" do
      get :show, :id => @user
      response.should be_success
    end
  end

  describe "GET 'new'" do
    it "should be successful" do
      get :new
      response.should be_success
    end

    it "should have the right title" do
      get :new
      response.should have_selector('title', :content => "Sign up")
    end
  end
end

Mes usines.rb est

FactoryGirl.create :user do |user|
  user.name                   "Mark Brown"
  user.email                 "[email protected]"
  user.password               "foobar"
  user.password_confirmation  "foobar"
end

J'ai changé

Factory(:name)

à

FactoryGirl.create(:user)

à la ligne 10 de mon user_controller_spec.rb parce que je recevais un avertissement de dépréciation. Je pensais que cela réglerait le problème, mais maintenant, je ne fais que commencer.

Factory not registered: user

Quelqu'un peut-il me dire ce qui se passe?

28
cw.prime

Je l'ai déjà corrigé.

La solution consistait à changer gem 'factory_girl' en gem 'factory_girl_Rails' dans mon Gemfile.

53
Gil Gomes

J'ai eu la même erreur lorsque j'ai utilisé FactoryGirl pour la première fois dans ce chapitre et tout ce que j'avais à faire était de redémarrer le serveur et Spork si vous l'utilisiez. J'espère que ça aide

41
rkrdo

que se passe-t-il si vous définissez d’abord l’usine sans la créer? essayez ceci:

FactoryGirl.define do
  factory :user do
    name                  "Mark Brown"
    email                 "[email protected]"
    password              "foobar"
    password_confirmation "foobar"
  end 
end
6

Vous aurez besoin de la gemme 'factory_girl_Rails' sous le groupe de test

3
Rupert

Dans votre Gemfile, vous devriez remplacer par ceci

gem "factory_girl_Rails", "~> 4.0"

au lieu de 

gem "factory_girl", "~> 3.2.0"
1
Harish

J'utilisais un levier comme IRB. Lorsque je l'ai retiré de mes pierres précieuses, j'ai pu faire fonctionner correctement Factory Girl. 

Rails c -e test

irb ->  FactoryGirl.create(:user)

Peut-être que quelqu'un peut expliquer comment faire fonctionner cela en utilisant un levier.

0
Pete Fullen