ruby on rails - sheet - Fábrica no registrada: usuario
factorygirl ruby (6)
Estoy siguiendo el tutorial de Michal Hartls Rails Capítulo 7. He instalado la gema de niña de Factory. Sigo recibiendo este error cuando ejecuto mi prueba
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
Cambié
Factory(:name)
a
FactoryGirl.create(:user)
en la línea 10 en mi user_controller_spec.rb
porque recibí una advertencia de disminución. Pensé que eso lo solucionaría, pero ahora solo estoy recibiendo.
Factory not registered: user
¿Puede alguien decirme qué está pasando?
¿Qué pasa si define fábrica primero, no la crea? prueba esto:
FactoryGirl.define do
factory :user do
name "Mark Brown"
email "[email protected]"
password "foobar"
password_confirmation "foobar"
end
end
En tu Gemfile deberías reemplazar con este
gem "factory_girl_rails", "~> 4.0"
en lugar de
gem "factory_girl", "~> 3.2.0"
Estaba usando la palanca como mi IRB. Cuando lo saqué de mis gemas pude hacer que Factory girl funcionara correctamente.
rails c -e test
irb -> FactoryGirl.create(:user)
Tal vez alguien pueda explicar cómo hacer funcionar esto haciendo palanca.
Necesitará la gema ''factory_girl_rails'' en el grupo de prueba
Tuve el mismo error cuando utilicé FactoryGirl por primera vez en ese Capítulo y todo lo que tenía que hacer era reiniciar el servidor y Spork si lo está usando. Espero eso ayude
Ya lo he arreglado.
La solución fue cambiar la gem ''factory_girl''
a gem ''factory_girl_rails''
en mi Gemfile.