Factory_bot: :postファクトリを定義するときのDuplicateDefinitionError

作成日 2012年03月06日  ·  3コメント  ·  ソース: thoughtbot/factory_bot

spec / factorys / post_factory.rb内:

FactoryGirl.define do
  factory :post do

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

  end
end

それで、私はこのエラーを受け取ります:

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

factory :postfactory :a_post, class: Postまたはその他の名前に変更すると、正常に機能します。 私が定義した他のファクトリは、ユーザーとセッションだけです(そしてそれらは正常に機能します)。

私は何か間違ったことをしていますか、それとも自動的に定義されてその名前を使用できない内部のポストファクトリがありますか?

最も参考になるコメント

あなたが_100%ポジティブ_であると仮定すると、いくつかの潜在的な問題があります。他のポストファクトリは存在しません(それが私が最初にチェックすることです)。 factory_girl_rails gemとRails3を使用していますか? その場合は、spec_helperまたはテスト中にロードされるその他のファイルのどこにもfactory_girl_rails必要ないことを確認してください。 また、すべてのファクトリをロードするFactoryGirl.find_definitions呼び出さないようにしてください。 これを2回実行することは、このエラーを確認する確実な方法です。 最後に、どこかでrequire "spec/factories/post_factory"を呼び出していますか? factory_girl_railsはすべてのファクトリをロードするため、これは不要です。

FactoryGirlはデフォルトでファクトリを作成しないため、ファクトリに干渉することはありません。

全てのコメント3件

あなたが_100%ポジティブ_であると仮定すると、いくつかの潜在的な問題があります。他のポストファクトリは存在しません(それが私が最初にチェックすることです)。 factory_girl_rails gemとRails3を使用していますか? その場合は、spec_helperまたはテスト中にロードされるその他のファイルのどこにもfactory_girl_rails必要ないことを確認してください。 また、すべてのファクトリをロードするFactoryGirl.find_definitions呼び出さないようにしてください。 これを2回実行することは、このエラーを確認する確実な方法です。 最後に、どこかでrequire "spec/factories/post_factory"を呼び出していますか? factory_girl_railsはすべてのファクトリをロードするため、これは不要です。

FactoryGirlはデフォルトでファクトリを作成しないため、ファクトリに干渉することはありません。

ああ。 どうやらpostモデルを生成したときに、test / factorys / posts.rbが作成されたようですが、RSpecを使用しているため、specディレクトリのみを調べていました。

私はそれを削除し、すべてが機能します。 ありがとう。

ああ、すごい! それが原因だと思いました。

このページは役に立ちましたか?
0 / 5 - 0 評価