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์ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ณต์ฅ์ ์์ฑํ์ง ์์ผ๋ฏ๋ก ๊ณต์ฅ์ ๋ฐฉํดํ์ง ์์ต๋๋ค.
์ฐํ. ๋ถ๋ช ํ ํฌ์คํธ ๋ชจ๋ธ์ ์์ฑํ ๋ test/factories/posts.rb๊ฐ ์์ฑ๋์์ง๋ง RSpec์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ spec ๋๋ ํ ๋ฆฌ๋ง ๋ณด๊ณ ์์์ต๋๋ค.
๋๋ ๊ทธ๊ฒ์ ์ ๊ฑฐํ๊ณ ๋ชจ๋ ๊ฒ์ด ์๋ํฉ๋๋ค. ๊ฐ์ฌ ํด์.
์, ๊ต์ฅํ๋ค! ๋๋ ๊ทธ๊ฒ์ด ๋ฒ์ธ์ผ ๊ฐ๋ฅ์ฑ์ด ๋๋ค๊ณ ์๊ฐํ๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋น์ ์ด _100% ๊ธ์ ์ ์ธ ๊ฒฝ์ฐ_ ๋ค๋ฅธ ํฌ์คํธ ํฉํ ๋ฆฌ๊ฐ ์กด์ฌํ์ง ์๋๋ค๊ณ ๊ฐ์ ํ ๋ ๋ช ๊ฐ์ง ์ ์ฌ์ ์ธ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
factory_girl_rails
gem๊ณผ Rails 3๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๊น? ๊ทธ๋ ๋ค๋ฉด spec_helper ๋๋ ํ ์คํธ ์ค์ ๋ก๋๋ ๋ค๋ฅธ ํ์ผ์ ์ด๋์๋factory_girl_rails
ํ์ํ์ง ์์์ง ํ์ธํ์ญ์์ค. ๋ํ ๋ชจ๋ ํฉํ ๋ฆฌ๋ฅผ ๋ก๋ํFactoryGirl.find_definitions
ํธ์ถํ์ง ์์๋์ง ํ์ธํ์ญ์์ค. ์ด๊ฒ์ ๋ ๋ฒ ์คํํ๋ฉด ์ด ์ค๋ฅ๋ฅผ ๋ณผ ์ ์๋ ํ์คํ ๋ฐฉ๋ฒ์ ๋๋ค. ๋ง์ง๋ง์ผ๋กrequire "spec/factories/post_factory"
์ด๋์์๋ ์ ํ๋ฅผ ๊ฑธ๊ณ ์์ต๋๊น?factory_girl_rails
๋ ๋ชจ๋ ํฉํ ๋ฆฌ๋ฅผ ๋ก๋ํ๋ฏ๋ก ์ด๊ฒ์ ๋ถํ์ํฉ๋๋ค.FactoryGirl์ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ณต์ฅ์ ์์ฑํ์ง ์์ผ๋ฏ๋ก ๊ณต์ฅ์ ๋ฐฉํดํ์ง ์์ต๋๋ค.