Dans spec/factories/post_factory.rb :
FactoryGirl.define do
factory :post do
user
title Faker::Lorem.sentence
body Faker::Lorem.paragraphs
end
end
Avec cela, j'obtiens cette erreur:
... factory_girl-2.6.1/lib/factory_girl/registry.rb:39:in `add_as': Factory already registered: post (FactoryGirl::DuplicateDefinitionError)
Si je change factory :post
en factory :a_post, class: Post
ou tout autre nom, ça marche bien. Les seules autres usines que j'ai définies sont l'utilisateur et la session (et celles-ci fonctionnent bien).
Est-ce que je fais quelque chose de mal ou existe-t-il une usine de publication interne automatiquement définie qui m'empêche d'utiliser ce nom ?
Il y a quelques problèmes potentiels, en supposant que vous êtes _100% positif_ aucune autre usine de post n'existe (c'est la première chose que je vérifierais). Utilisez-vous le gem factory_girl_rails
et Rails 3 ? Si c'est le cas, assurez-vous que vous n'avez pas besoin de factory_girl_rails
dans votre spec_helper ou dans tout autre fichier qui serait chargé pendant vos tests. Assurez-vous également que vous n'appelez pas FactoryGirl.find_definitions
, qui chargera toutes les usines ; l'exécuter deux fois est un moyen infaillible de voir cette erreur. Enfin, appelez-vous require "spec/factories/post_factory"
n'importe où ? factory_girl_rails
chargera toutes les usines, ce n'est donc pas nécessaire.
FactoryGirl ne crée pas d'usines pour vous par défaut, donc cela ne va pas interférer avec votre usine.
Salut. Apparemment, lorsque j'ai généré le modèle de publication, un fichier test/factories/posts.rb a été créé, mais je ne cherchais que dans le répertoire spec depuis que j'utilise RSpec.
Je l'ai supprimé et tout fonctionne. Merci.
Ah, génial ! J'ai pensé que c'était probablement le coupable.
Commentaire le plus utile
Il y a quelques problèmes potentiels, en supposant que vous êtes _100% positif_ aucune autre usine de post n'existe (c'est la première chose que je vérifierais). Utilisez-vous le gem
factory_girl_rails
et Rails 3 ? Si c'est le cas, assurez-vous que vous n'avez pas besoin defactory_girl_rails
dans votre spec_helper ou dans tout autre fichier qui serait chargé pendant vos tests. Assurez-vous également que vous n'appelez pasFactoryGirl.find_definitions
, qui chargera toutes les usines ; l'exécuter deux fois est un moyen infaillible de voir cette erreur. Enfin, appelez-vousrequire "spec/factories/post_factory"
n'importe où ?factory_girl_rails
chargera toutes les usines, ce n'est donc pas nécessaire.FactoryGirl ne crée pas d'usines pour vous par défaut, donc cela ne va pas interférer avec votre usine.