Factory_bot: DuplicateDefinitionError beim Definieren einer :post Factory

Erstellt am 6. März 2012  ·  3Kommentare  ·  Quelle: thoughtbot/factory_bot

In spec/factories/post_factory.rb:

FactoryGirl.define do
  factory :post do

    user
    title Faker::Lorem.sentence
    body Faker::Lorem.paragraphs

  end
end

Damit bekomme ich diesen Fehler:

... factory_girl-2.6.1/lib/factory_girl/registry.rb:39:in `add_as': Factory already registered: post (FactoryGirl::DuplicateDefinitionError)

Wenn ich factory :post in factory :a_post, class: Post oder einen anderen Namen ändere, funktioniert es einwandfrei. Die einzigen anderen Fabriken, die ich definiert habe, sind Benutzer und Sitzung (und diese funktionieren einwandfrei).

Mache ich etwas falsch oder wird eine interne Postfactory automatisch definiert, die mich daran hindert, diesen Namen zu verwenden?

Hilfreichster Kommentar

Es gibt ein paar potenzielle Probleme, vorausgesetzt, Sie sind _100% positiv_, es gibt keine andere Post-Factory (das ist das erste, was ich überprüfen würde). Verwenden Sie das Juwel factory_girl_rails und Rails 3? Wenn ja, stellen Sie sicher, dass Sie nirgendwo in Ihrem spec_helper oder einer anderen Datei, die während Ihrer Tests geladen werden würde, factory_girl_rails benötigen. Stellen Sie außerdem sicher, dass Sie nicht FactoryGirl.find_definitions aufrufen, wodurch alle Fabriken geladen werden; Wenn Sie dies zweimal ausführen, können Sie diesen Fehler sehen. Schließlich rufen Sie require "spec/factories/post_factory" irgendwo an? factory_girl_rails lädt alle Fabriken, so dass dies unnötig ist.

FactoryGirl erstellt standardmäßig keine Fabriken für Sie, sodass Ihre Fabrik nicht beeinträchtigt wird.

Alle 3 Kommentare

Es gibt ein paar potenzielle Probleme, vorausgesetzt, Sie sind _100% positiv_, es gibt keine andere Post-Factory (das ist das erste, was ich überprüfen würde). Verwenden Sie das Juwel factory_girl_rails und Rails 3? Wenn ja, stellen Sie sicher, dass Sie nirgendwo in Ihrem spec_helper oder einer anderen Datei, die während Ihrer Tests geladen werden würde, factory_girl_rails benötigen. Stellen Sie außerdem sicher, dass Sie nicht FactoryGirl.find_definitions aufrufen, wodurch alle Fabriken geladen werden; Wenn Sie dies zweimal ausführen, können Sie diesen Fehler sehen. Schließlich rufen Sie require "spec/factories/post_factory" irgendwo an? factory_girl_rails lädt alle Fabriken, so dass dies unnötig ist.

FactoryGirl erstellt standardmäßig keine Fabriken für Sie, sodass Ihre Fabrik nicht beeinträchtigt wird.

Gut. Anscheinend wurde beim Generieren des Post-Modells eine test/factories/posts.rb erstellt, aber ich habe nur im spec-Verzeichnis gesucht, da ich RSpec verwende.

Ich habe das entfernt und alles funktioniert. Danke.

Ach, toll! Ich dachte, das war wahrscheinlich der Übeltäter.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen