2012-05-02 6 views
27

Estoy siguiendo el tutorial de Michal Hartls Rails Capítulo 7. He instalado la joya Factory girl. Sigo recibiendo este error cuando corro mi pruebaFábrica no registrada: usuario

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 => 

Mi user_controller_spec.rb es

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 

Mi factories.rb es

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

I cambiado

Factory(:name) 

a

FactoryGirl.create(:user) 

en la línea 10 en mi user_controller_spec.rb becuase que estaba recibiendo una advertencia deprication. Pensé que eso lo arreglaría, pero ahora estoy empezando.

Factory not registered: user 

¿Alguien me puede decir qué está pasando?

Respuesta

6

¿Qué sucede si primero defines la fábrica, no la creas? intente esto:

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

Esto funcionó para mí. ¡Gracias! –

3

Tendrá la gema 'factory_girl_rails' bajo el grupo de prueba

+0

Funcionó para mí. Accidentalmente utilicé gem 'factory_girl' en lugar de 'factory_girl_rails' –

41

que tenían el mismo error cuando se utilizó por primera factorygirl en dicho capítulo y todo lo que tenía que hacer era para reiniciar el servidor y Spork si lo estás usando. Espero que ayude

+3

Restableciendo 'spork' ayudado por mí, ¡gracias! – Martin

+3

Lo mismo aquí, reinicié los servidores rails y guard/spork y luego pasan las pruebas. Eso es un poco molesto. – Raj

+0

Mismo problema y solución para usuarios de zeus. – Pistos

52

Ya lo he solucionado.

La solución fue cambiar gem 'factory_girl' a gem 'factory_girl_rails' en mi Gemfile.

+0

Gracias. Esto resolvió mi problema. –

+0

Esto también solucionó el problema para mí - gracias –

+0

Brillante. ¡Gracias! – creativetim

1

En su Gemfile se debe reemplazar con este

gem "factory_girl_rails", "~> 4.0" 

en lugar de

gem "factory_girl", "~> 3.2.0" 
0

que estaba usando la palanca como mi IRB. Cuando lo eliminé de mis gemas, pude hacer que Factory girl funcionara correctamente.

rails c -e test 

irb -> FactoryGirl.create(:user) 

Quizás alguien pueda explicar cómo hacerlo funcionar con palanca.

Cuestiones relacionadas