En spec / factories / post_factory.rb:
FactoryGirl.define do
factory :post do
user
title Faker::Lorem.sentence
body Faker::Lorem.paragraphs
end
end
Con eso, obtengo este error:
... factory_girl-2.6.1/lib/factory_girl/registry.rb:39:in `add_as': Factory already registered: post (FactoryGirl::DuplicateDefinitionError)
Si cambio factory :post
a factory :a_post, class: Post
o cualquier otro nombre, funciona bien. Las únicas otras fábricas que he definido son usuario y sesión (y funcionan bien).
¿Estoy haciendo algo mal o hay alguna fábrica de correos interna que se define automáticamente que me impide usar ese nombre?
Hay un par de problemas potenciales, asumiendo que está _100% positivo_ no existe otra fábrica de correos (eso es lo primero que verificaría). ¿Está utilizando la gema factory_girl_rails
y Rails 3? Si es así, asegúrese de no requerir factory_girl_rails
en ninguna parte de su spec_helper o cualquier otro archivo que se cargaría durante sus pruebas. Además, asegúrese de no llamar a FactoryGirl.find_definitions
, que cargará todas las fábricas; ejecutar esto dos veces es una forma segura de ver este error. Finalmente, ¿estás llamando a require "spec/factories/post_factory"
cualquier lugar? factory_girl_rails
cargará todas las fábricas, por lo que esto es innecesario.
FactoryGirl no crea ninguna fábrica para usted de forma predeterminada, por lo que no va a interferir con su fábrica.
Welp. Aparentemente, cuando generé el modelo de publicación, se creó una prueba / fábricas / publicaciones.rb, pero solo estaba buscando en el directorio de especificaciones ya que uso RSpec.
Quité eso y todo funciona. Gracias.
¡Ah, genial! Supuse que probablemente era el culpable.
Comentario más útil
Hay un par de problemas potenciales, asumiendo que está _100% positivo_ no existe otra fábrica de correos (eso es lo primero que verificaría). ¿Está utilizando la gema
factory_girl_rails
y Rails 3? Si es así, asegúrese de no requerirfactory_girl_rails
en ninguna parte de su spec_helper o cualquier otro archivo que se cargaría durante sus pruebas. Además, asegúrese de no llamar aFactoryGirl.find_definitions
, que cargará todas las fábricas; ejecutar esto dos veces es una forma segura de ver este error. Finalmente, ¿estás llamando arequire "spec/factories/post_factory"
cualquier lugar?factory_girl_rails
cargará todas las fábricas, por lo que esto es innecesario.FactoryGirl no crea ninguna fábrica para usted de forma predeterminada, por lo que no va a interferir con su fábrica.