Dalam spec/factories/post_factory.rb:
FactoryGirl.define do
factory :post do
user
title Faker::Lorem.sentence
body Faker::Lorem.paragraphs
end
end
Dengan itu, saya mendapatkan kesalahan ini:
... factory_girl-2.6.1/lib/factory_girl/registry.rb:39:in `add_as': Factory already registered: post (FactoryGirl::DuplicateDefinitionError)
Jika saya mengubah factory :post
menjadi factory :a_post, class: Post
atau nama lain apa pun, itu berfungsi dengan baik. Satu-satunya pabrik lain yang saya tetapkan adalah pengguna dan sesi (dan itu berfungsi dengan baik).
Apakah saya melakukan sesuatu yang salah, atau apakah ada beberapa pabrik pos internal yang secara otomatis ditentukan yang mencegah saya menggunakan nama itu?
Ada beberapa masalah potensial, dengan asumsi Anda _100% positif_ tidak ada pabrik pos lain (itu hal pertama yang saya periksa). Apakah Anda menggunakan permata factory_girl_rails
dan Rails 3? Jika ya, pastikan Anda tidak memerlukan factory_girl_rails
di mana pun di spec_helper Anda atau file lain apa pun yang akan dimuat selama pengujian Anda. Juga, pastikan Anda tidak memanggil FactoryGirl.find_definitions
, yang akan memuat semua pabrik; menjalankan ini dua kali adalah cara yang pasti untuk melihat kesalahan ini. Akhirnya, apakah Anda menelepon require "spec/factories/post_factory"
mana saja? factory_girl_rails
akan memuat semua pabrik jadi ini tidak perlu.
FactoryGirl tidak membuat pabrik apa pun untuk Anda secara default sehingga tidak akan mengganggu pabrik Anda.
Yah. Rupanya ketika saya membuat model posting, sebuah test/factories/posts.rb telah dibuat, tetapi saya hanya mencari di direktori spesifikasi karena saya menggunakan RSpec.
Saya menghapus itu dan semuanya berfungsi. Terima kasih.
Hebat! Saya pikir itu kemungkinan pelakunya.
Komentar yang paling membantu
Ada beberapa masalah potensial, dengan asumsi Anda _100% positif_ tidak ada pabrik pos lain (itu hal pertama yang saya periksa). Apakah Anda menggunakan permata
factory_girl_rails
dan Rails 3? Jika ya, pastikan Anda tidak memerlukanfactory_girl_rails
di mana pun di spec_helper Anda atau file lain apa pun yang akan dimuat selama pengujian Anda. Juga, pastikan Anda tidak memanggilFactoryGirl.find_definitions
, yang akan memuat semua pabrik; menjalankan ini dua kali adalah cara yang pasti untuk melihat kesalahan ini. Akhirnya, apakah Anda meneleponrequire "spec/factories/post_factory"
mana saja?factory_girl_rails
akan memuat semua pabrik jadi ini tidak perlu.FactoryGirl tidak membuat pabrik apa pun untuk Anda secara default sehingga tidak akan mengganggu pabrik Anda.