2011-12-07 11 views
15

Problemas para obtener todos los patos en el orden correcto con FactoryGirl.FactoryGirl: fábrica no registrada: usuario (ArgumentError)

Configure una aplicación minimalista de rieles (3.0.11), factory_girl_rails (1.4.0), factory_girl (2.3.2) & pepino-rails (1.2.1) y ruby-1.8.7-p352.

La prueba pepino es:

Feature: a 
    Scenario: test factory-girl 
    Given the following user exists: 
    | name | email    | 
    | Brandon | [email protected] | 

El resultado es este:

cucumber 
Using the default profile... 
"Adam Advertiser" 
"[email protected]" 
#<User id: nil, name: nil, created_at: nil, updated_at: nil, email: nil> 
Feature: a 

    Scenario: test factory-girl  # features/users.feature:2 
    Given the following user exists: # factory_girl-2.3.2/lib/factory_girl/step_definitions.rb:100 
     | name | email    | 
     | Brandon | [email protected] | 
     **Factory not registered: user (ArgumentError)** 
     features/users.feature:3:in `Given the following user exists:' 

Failing Scenarios: 
cucumber features/users.feature:2 # Scenario: test factory-girl 

1 scenario (1 failed) 
1 step (1 failed) 
0m0.107s 

Parecería un problema secuencia de carga, tal vez. Agradecería cualquier ayuda para hacer esto bien. Saludos Ross

características/Factories.rb es así:

FactoryGirl.define do 
    factory :user do 
     name 'Adam Advertiser' 
     email '[email protected]' 
    end 
end 
pp FactoryGirl.create(:user) 

require 'factory_girl/step_definitions' 

Mi características/soporte/env.rb es:

require 'pp' 
require 'cucumber/rails' 

require 'factory_girl_rails' 

Mi Gemfile es:

source 'http://rubygems.org' 

gem 'rails', '3.0.11' 

gem 'sqlite3' 


group :development, :test do 

    gem 'cucumber-rails' 
    gem 'factory_girl_rails'  # rails 3 version 

end 

Respuesta

0

Soy nuevo en factorygirl y se enfrentaron a un error similar a la mencionada en este error Post.The me enfrenté fue

ArgumentError: 
    Not registered: client 

configuración de fábrica:

/spec/fábricas .rb

Factory.define :user do |f| 
    f.email { Faker::Internet.email } 
    f.first_name { Faker::Name.first_name } 
    f.last_name { Faker::Name.last_name } 
    f.phone { Faker::PhoneNumber.phone_number } 
    f.password "foobar" 
end 

/spec/factories/users.rb - Con CONTENIDAS fábricas para niños: usuario

Factory.define :client, :parent => :user do |client| 
    client.email     { Factory.next(:client_email) } 
    client.password     "password" 
    client.password_confirmation "password" 
end 

yo estaba corriendo la especificación usando los siguientes comandos:

app_root$ RAILS_ENV=custom_test bundle exec rspec spec/controllers/users_controller_spec.rb 

Gracias a @ Ross.The archivo GEM muestra que me hace clic en lo que faltaba.

Gracias.

0

He resuelto este problema sólo tiene que añadir estas líneas en mi spec_helper:

require 'factory_girl' 
FactoryGirl.find_definitions 
0

Según this answer, añadiendo FactoryGirl.find_definitions va a funcionar, pero la adición de require 'rails_helper' debería eliminar la necesidad de que si no lo ha hecho.

Cuestiones relacionadas