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 :post
をfactory :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はデフォルトでファクトリを作成しないため、ファクトリに干渉することはありません。
ああ。 どうやらpostモデルを生成したときに、test / factorys / posts.rbが作成されたようですが、RSpecを使用しているため、specディレクトリのみを調べていました。
私はそれを削除し、すべてが機能します。 ありがとう。
ああ、すごい! それが原因だと思いました。
最も参考になるコメント
あなたが_100%ポジティブ_であると仮定すると、いくつかの潜在的な問題があります。他のポストファクトリは存在しません(それが私が最初にチェックすることです)。
factory_girl_rails
gemとRails3を使用していますか? その場合は、spec_helperまたはテスト中にロードされるその他のファイルのどこにもfactory_girl_rails
必要ないことを確認してください。 また、すべてのファクトリをロードするFactoryGirl.find_definitions
呼び出さないようにしてください。 これを2回実行することは、このエラーを確認する確実な方法です。 最後に、どこかでrequire "spec/factories/post_factory"
を呼び出していますか?factory_girl_rails
はすべてのファクトリをロードするため、これは不要です。FactoryGirlはデフォルトでファクトリを作成しないため、ファクトリに干渉することはありません。