2011-04-08 8 views
8
ruby-1.9.2-p180 :007 > Factory.define :user do |user| 
ruby-1.9.2-p180 :008 >  user.email     "[email protected]" 
ruby-1.9.2-p180 :009?>  user.password    "foobar" 
ruby-1.9.2-p180 :010?>  user.password_confirmation "foobar" 
ruby-1.9.2-p180 :011?> end 
NameError: uninitialized constant Factory 

Mi Gemfile:Rails 3 + factorygirl: NameError: sin inicializar fábrica constante

group :test do 
    gem "rspec-rails" 
    gem 'webrat', '0.7.1' 
    gem 'spork', '0.9.0.rc4' 
    gem 'factory_girl_rails' 
end 

Incluso dura parece que tengo todo como debe ser, me siguen dando ese error. También tengo factories.rb creado.

Gracias

Respuesta

10

supongo que intenta en la consola en el entorno de desarrollo. Pero agrega la gema de fábrica solo en el entorno de prueba.

Si desea acceder a factory_girl en uso el desarrollo en su Gemfile:

group :test, :development do 
    gem 'factory_girl_rails' 
end 

O si desea probar su fábrica de lanzar su consola en el entorno de prueba:

rails c test 
2

Hemos tenido un problema similar en nuestro extremo, las especificaciones de rake parecían fallar aleatoriamente con el error FactoryGirl sin inicializar. El error fue aleatorio -> ir y venir. Retrocedimos media docena de commit de git para intentar resolverlo. Al final fue un error tonto.

El problema fundamental es RAILS_ENV se establece en desarrollo. Tiene que establecerse en prueba cuando ejecuta las especificaciones de rake.

Dirección por:

  1. asegurándose de que estamos ejecutando rake spec en el RAILS_ENV prueba medio ambiente y su exportada/de origen correctamente. Para nunca confundir nuestros entornos, modificamos la variable de entorno zsh $ RPROMPT para mostrar el env actual.

    rprompt exportación = "[% $ {fg_no_bold [amarilla]%} $ {$ RAILS_ENV% reset_color%}]"

  2. Requerir factorygirl en la especificación archivos rubí dieron un mensaje de error mucho mejor. Al menos rspec se ejecutaría frente a simplemente falla de esta manera cuando el entorno era incorrecto. También actualizamos nuestro gemfile para asegurarnos de que factory_girl_rails y factory_girl se cargaran tanto para el desarrollo como para las pruebas.

  3. Ahora solo ejecutamos rpsec usando protector de gemas en un terminal dedicado con el conjunto RAILS_ENV adecuado.

Es uno de esos problemas.

Estamos ejecutando Ruby 1.9.3, Rails 3.2.9, Rspec 2.12, factory_girl 4.1.

+0

OMG ¡Olvidé que tenía este juego! – Chloe

0

También debe cambiar Factory.define a FactoryGirl.define, como en este ejemplo

FactoryGirl.define do 
    factory :user do 
    name 'John Doe' 
    date_of_birth { 21.years.ago } 
    end 
end 

del factory_girl documentation

2

También me encontré con esto mientras yo estaba haciendo el tutorial Hartl.

Si está utilizando "Spork" para acelerar sus pruebas y se ejecuta en segundo plano cuando agrega el código FactoryGirl, tendrá que detenerlo y reiniciarlo.

Cuestiones relacionadas