Factory_bot: :post ํŒฉํ† ๋ฆฌ๋ฅผ ์ •์˜ํ•  ๋•Œ DuplicateDefinitionError

์— ๋งŒ๋“  2012๋…„ 03์›” 06์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: thoughtbot/factory_bot

spec/factories/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๊ณผ Rails 3๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด spec_helper ๋˜๋Š” ํ…Œ์ŠคํŠธ ์ค‘์— ๋กœ๋“œ๋  ๋‹ค๋ฅธ ํŒŒ์ผ์˜ ์–ด๋””์—๋„ factory_girl_rails ํ•„์š”ํ•˜์ง€ ์•Š์€์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ๋˜ํ•œ ๋ชจ๋“  ํŒฉํ† ๋ฆฌ๋ฅผ ๋กœ๋“œํ•  FactoryGirl.find_definitions ํ˜ธ์ถœํ•˜์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ์ด๊ฒƒ์„ ๋‘ ๋ฒˆ ์‹คํ–‰ํ•˜๋ฉด ์ด ์˜ค๋ฅ˜๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋Š” ํ™•์‹คํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ require "spec/factories/post_factory" ์–ด๋””์—์„œ๋‚˜ ์ „ํ™”๋ฅผ ๊ฑธ๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? factory_girl_rails ๋Š” ๋ชจ๋“  ํŒฉํ† ๋ฆฌ๋ฅผ ๋กœ๋“œํ•˜๋ฏ€๋กœ ์ด๊ฒƒ์€ ๋ถˆํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

FactoryGirl์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ณต์žฅ์„ ์ƒ์„ฑํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๊ณต์žฅ์„ ๋ฐฉํ•ดํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  3 ๋Œ“๊ธ€

๋‹น์‹ ์ด _100% ๊ธ์ •์ ์ธ ๊ฒฝ์šฐ_ ๋‹ค๋ฅธ ํฌ์ŠคํŠธ ํŒฉํ† ๋ฆฌ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ๊ฐ€์ •ํ•  ๋•Œ ๋ช‡ ๊ฐ€์ง€ ์ž ์žฌ์ ์ธ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. factory_girl_rails gem๊ณผ Rails 3๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด spec_helper ๋˜๋Š” ํ…Œ์ŠคํŠธ ์ค‘์— ๋กœ๋“œ๋  ๋‹ค๋ฅธ ํŒŒ์ผ์˜ ์–ด๋””์—๋„ factory_girl_rails ํ•„์š”ํ•˜์ง€ ์•Š์€์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ๋˜ํ•œ ๋ชจ๋“  ํŒฉํ† ๋ฆฌ๋ฅผ ๋กœ๋“œํ•  FactoryGirl.find_definitions ํ˜ธ์ถœํ•˜์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ์ด๊ฒƒ์„ ๋‘ ๋ฒˆ ์‹คํ–‰ํ•˜๋ฉด ์ด ์˜ค๋ฅ˜๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋Š” ํ™•์‹คํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ require "spec/factories/post_factory" ์–ด๋””์—์„œ๋‚˜ ์ „ํ™”๋ฅผ ๊ฑธ๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? factory_girl_rails ๋Š” ๋ชจ๋“  ํŒฉํ† ๋ฆฌ๋ฅผ ๋กœ๋“œํ•˜๋ฏ€๋กœ ์ด๊ฒƒ์€ ๋ถˆํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

FactoryGirl์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ณต์žฅ์„ ์ƒ์„ฑํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๊ณต์žฅ์„ ๋ฐฉํ•ดํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์›ฐํ”„. ๋ถ„๋ช…ํžˆ ํฌ์ŠคํŠธ ๋ชจ๋ธ์„ ์ƒ์„ฑํ•  ๋•Œ test/factories/posts.rb๊ฐ€ ์ƒ์„ฑ๋˜์—ˆ์ง€๋งŒ RSpec์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— spec ๋””๋ ‰ํ† ๋ฆฌ๋งŒ ๋ณด๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์ œ๊ฑฐํ•˜๊ณ  ๋ชจ๋“  ๊ฒƒ์ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ์‚ฌ ํ•ด์š”.

์•„, ๊ต‰์žฅํ•˜๋‹ค! ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๋ฒ”์ธ์ผ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰