Skip to main content
pnpm fixture ๋ช…๋ น์–ด๋Š” ํ…Œ์ŠคํŠธ์— ์‚ฌ์šฉํ•  ์ผ๊ด€๋œ ๋ฐ์ดํ„ฐ ์„ธํŠธ๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์˜ ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์œผ๋กœ ๋ณต์‚ฌํ•˜์—ฌ, ์•ˆ์ •์ ์ด๊ณ  ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ๊ฐœ๋…

Fixture๋Š” ํ…Œ์ŠคํŠธ์šฉ ๊ณ ์ •๋œ ๋ฐ์ดํ„ฐ ์„ธํŠธ์ž…๋‹ˆ๋‹ค:
  • ์ผ๊ด€์„ฑ: ๋ชจ๋“  ํ…Œ์ŠคํŠธ๊ฐ€ ๊ฐ™์€ ์ดˆ๊ธฐ ๋ฐ์ดํ„ฐ๋กœ ์‹œ์ž‘
  • ๊ฒฉ๋ฆฌ: ํ…Œ์ŠคํŠธ DB์™€ ๊ฐœ๋ฐœ DB ๋ถ„๋ฆฌ
  • ์žฌํ˜„์„ฑ: ๊ฐ™์€ ์กฐ๊ฑด์—์„œ ๋ฐ˜๋ณต ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅ
  • ๊ด€๊ณ„ ๋ณด์กด: ์™ธ๋ž˜ํ‚ค ๊ด€๊ณ„๊ฐ€ ์œ ์ง€๋จ

๋ช…๋ น์–ด

init - ํ…Œ์ŠคํŠธ DB ์ดˆ๊ธฐํ™”

๊ฐœ๋ฐœ DB์˜ ์Šคํ‚ค๋งˆ๋ฅผ ํ…Œ์ŠคํŠธ DB๋กœ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.
์‹คํ–‰ ๊ณผ์ •:
์ƒ์„ฑ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค:
  • Fixture DB (์›๊ฒฉ): ๊ณต์œ  fixture ์ €์žฅ์†Œ
  • Test DB (๋กœ์ปฌ): ๋กœ์ปฌ ํ…Œ์ŠคํŠธ์šฉ DB
init์€ ์Šคํ‚ค๋งˆ๋งŒ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋Š” ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

import - ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ

๊ฐœ๋ฐœ DB์—์„œ ํŠน์ • ๋ ˆ์ฝ”๋“œ๋ฅผ fixture๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
๋Œ€ํ™”ํ˜• ํ”„๋กฌํ”„ํŠธ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค:
์ž๋™์œผ๋กœ ํฌํ•จ๋˜๋Š” ๊ด€๋ จ ๋ฐ์ดํ„ฐ:
  • ์™ธ๋ž˜ํ‚ค๋กœ ์ฐธ์กฐ๋˜๋Š” ๋ ˆ์ฝ”๋“œ
  • ๊ด€๊ณ„ ํ…Œ์ด๋ธ”์˜ ๋ ˆ์ฝ”๋“œ
  • ์—ญ์ฐธ์กฐ ๋ ˆ์ฝ”๋“œ (์„ ํƒ ๊ฐ€๋Šฅ)

sync - ๋™๊ธฐํ™”

์ €์žฅ๋œ fixture๋ฅผ ํ…Œ์ŠคํŠธ DB์— ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.
์‹คํ–‰ ๊ณผ์ •:
ํ…Œ์ŠคํŠธ ์‹คํ–‰ ์ „์— sync๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ํ•ญ์ƒ ๊นจ๋—ํ•œ ์ƒํƒœ์—์„œ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

gen - ์ž๋™ Fixture ์ƒ์„ฑ

Entity์˜ cone ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ž๋™์œผ๋กœ Fixture๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๊ฑฐ๋‚˜ ๊ฐ€์ƒ์˜ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
๋Œ€ํ™”ํ˜• ๋ชจ๋“œ:
User ์—”ํ‹ฐํ‹ฐ๊ฐ€ ์„ ํƒ์— ํฌํ•จ๋œ ๊ฒฝ์šฐ์—๋งŒ ์ƒ์„ฑ ๋ฐฉ์‹ ์„ ํƒ ํ”„๋กฌํ”„ํŠธ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. User ์—”ํ‹ฐํ‹ฐ๊ฐ€ ์—†์œผ๋ฉด ๋ฐ”๋กœ ์ €์žฅ ๋ฐฉ์‹ ์„ ํƒ์œผ๋กœ ๋„˜์–ด๊ฐ‘๋‹ˆ๋‹ค.
๋กœ๊ทธ์ธ ๊ฐ€๋Šฅํ•œ User Fixture ์ƒ์„ฑ: User ์—”ํ‹ฐํ‹ฐ๋ฅผ ์„ ํƒํ•˜๊ณ  โ€œ๋กœ๊ทธ์ธ ๊ฐ€๋Šฅํ•œ ์‚ฌ์šฉ์ž fixture ์ƒ์„ฑโ€์„ ์„ ํƒํ•˜๋ฉด, better-auth์˜ sign-up/email ์—”๋“œํฌ์ธํŠธ๋ฅผ ํ†ตํ•ด ์‹ค์ œ๋กœ ๋กœ๊ทธ์ธ ๊ฐ€๋Šฅํ•œ ์‚ฌ์šฉ์ž๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ชจ๋“œ์˜ ๋™์ž‘:
  1. FixtureGenerator๋กœ User ๋ฐ์ดํ„ฐ(name, email, username ๋“ฑ)๋ฅผ ์ƒ์„ฑ
  2. Sonamu.auth.handler()๋ฅผ ํ†ตํ•ด better-auth sign-up API๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์‚ฌ์šฉ์ž ๋“ฑ๋ก
  3. ์ƒ์„ฑ๋œ ๋ชจ๋“  ์‚ฌ์šฉ์ž์˜ email_verified๋ฅผ true๋กœ ์ž๋™ ์—…๋ฐ์ดํŠธ
  4. ์ƒ์„ฑ๋œ ๊ณ„์ • ๋ชฉ๋ก(email, password)์„ ์ฝ˜์†”์— ์ถœ๋ ฅ
์ƒ์„ฑ๋œ ๋ชจ๋“  ์‚ฌ์šฉ์ž์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” Test1234!๋กœ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ ๊ฐœ๋ฐœ/ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ ์ „์šฉ์ด๋ฉฐ, ํ”„๋กœ๋•์…˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์‚ฌ์šฉํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.
โ€œํ™•์ธ์šฉ ๋ฐ์ดํ„ฐ(๋กœ๊ทธ์ธ ๋ถˆ๊ฐ€) ์ƒ์„ฑโ€์„ ์„ ํƒํ•˜๋ฉด ๊ธฐ์กด๊ณผ ๋™์ผํ•˜๊ฒŒ generateBatch()๋กœ DB์— ์ง์ ‘ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ better-auth ์ธ์ฆ ๋ ˆ์ฝ”๋“œ๊ฐ€ ์ƒ์„ฑ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋กœ๊ทธ์ธ์€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. CLI ์˜ต์…˜: ์ €์žฅ ๋ฐฉ์‹:
  • db: Fixture DB์— ์ง์ ‘ ์ €์žฅ (๊ธฐ๋ณธ๊ฐ’)
  • file: test/fixtures/{entity_table}.json ํŒŒ์ผ๋กœ ์ €์žฅ
  • file:{filename}: ์ง€์ •๋œ ํŒŒ์ผ๋ช…์œผ๋กœ ์ €์žฅ
  • none: ์ €์žฅํ•˜์ง€ ์•Š๊ณ  ์ฝ˜์†”์— ์ถœ๋ ฅ๋งŒ
๊ฐ’ ์ƒ์„ฑ ์šฐ์„ ์ˆœ์œ„: ๊ฐ ํ•„๋“œ์˜ ๊ฐ’์„ ์ƒ์„ฑํ•  ๋•Œ ์•„๋ž˜ ์ˆœ์„œ๋Œ€๋กœ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋จผ์ € ๋งค์นญ๋˜๋Š” ์ „๋žต์ด ์‚ฌ์šฉ๋˜๊ณ , ์ดํ›„ ๋‹จ๊ณ„๋Š” ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค.
  1. Relation โ€” ์™ธ๋ž˜ํ‚ค ๊ด€๊ณ„๊ฐ€ ์žˆ๋Š” ํ•„๋“œ๋Š” ์ž๋™์œผ๋กœ ๊ด€๋ จ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑ/์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค.
  2. cone.note + LLM โ€” --use-llm ์˜ต์…˜์ด ์ผœ์ ธ ์žˆ๊ณ , ํ•ด๋‹น ํ•„๋“œ์˜ cone์— note๊ฐ€ ์ง€์ •๋œ ๊ฒฝ์šฐ LLM์ด note ๋‚ด์šฉ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ˜„์‹ค์ ์ธ ๊ฐ’์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. LLM ํ˜ธ์ถœ์ด ์‹คํŒจํ•˜๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋กœ ๋„˜์–ด๊ฐ‘๋‹ˆ๋‹ค.
  3. cone.fixtureGenerator โ€” cone์— fixtureGenerator(Faker ํ‘œํ˜„์‹ ๋“ฑ)๊ฐ€ ์ง€์ •๋œ ๊ฒฝ์šฐ ์ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  4. cone.fixtureDefault โ€” cone์— fixtureDefault ๊ณ ์ •๊ฐ’์ด ์ง€์ •๋œ ๊ฒฝ์šฐ ์ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  5. ํƒ€์ž…๋ณ„ ๊ธฐ๋ณธ ์ƒ์„ฑ โ€” ์œ„ ์–ด๋–ค ์ „๋žต๋„ ํ•ด๋‹นํ•˜์ง€ ์•Š์œผ๋ฉด ํ•„๋“œ ํƒ€์ž…(string, number, date ๋“ฑ)์— ๋”ฐ๋ผ ์ž๋™ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
--use-llm ์‚ฌ์šฉ ์‹œ cone.note๊ฐ€ ์žˆ๋Š” ํ•„๋“œ๋Š” fixtureGenerator๋ณด๋‹ค LLM์ด ์šฐ์„ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋„๋ฉ”์ธ์— ๋งž๋Š” ๋” ํ˜„์‹ค์ ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
LLM์ด ์ƒ์„ฑํ•œ ๋ฌธ์ž์—ด์ด ํ•ด๋‹น ํ•„๋“œ์˜ length ์ œ์•ฝ์„ ์ดˆ๊ณผํ•˜๋ฉด ์ž๋™์œผ๋กœ ์ž˜๋ผ๋ƒ…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด varchar(100) ํ•„๋“œ์— ๋Œ€ํ•ด LLM์ด 120์ž๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ์•ž 100์ž๋งŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
Companion Fixture ์ž๋™ ์ƒ์„ฑ: Entity์˜ cone์— fixtureCompanions๊ฐ€ ์„ ์–ธ๋˜์–ด ์žˆ์œผ๋ฉด, ๋ถ€๋ชจ fixture ์ƒ์„ฑ ์‹œ companion Entity์˜ fixture๋„ ํ•จ๊ป˜ ์ž๋™ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด better-auth ๊ธฐ๋ฐ˜ ํ”„๋กœ์ ํŠธ์—์„œ User fixture๋ฅผ ์ƒ์„ฑํ•˜๋ฉด credentials Account๋„ ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. fixtureCompanions๋Š” Entity์˜ id prop cone์— ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค:
better-auth๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ์กด ํ”„๋กœ์ ํŠธ์— fixtureCompanions๋ฅผ ์†Œ๊ธ‰ ์ ์šฉํ•˜๋ ค๋ฉด:
์ด ๋ช…๋ น์–ด๋Š” better-auth Entity(User ๋“ฑ)์˜ entity.json์— fixtureCompanions ์„ค์ •์ด ์—†๋Š” ๊ฒฝ์šฐ์—๋งŒ ์ž๋™์œผ๋กœ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฏธ ์„ค์ •์ด ์žˆ๋Š” Entity๋Š” ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค. parentId ์—”ํ‹ฐํ‹ฐ Fixture ์ƒ์„ฑ: parentId๊ฐ€ ์ง€์ •๋œ ์—”ํ‹ฐํ‹ฐ(์ƒ์† ๊ด€๊ณ„์˜ ์„œ๋ธŒํƒ€์ž…)๋Š” gen ์‹œ ํŠน๋ณ„ํ•œ ๋ฐฉ์‹์œผ๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๋ถ€๋ชจ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋Œ€์‹ , DB์—์„œ ์•„์ง ์„œ๋ธŒํƒ€์ž… ํ–‰์ด ์—†๋Š” ๊ธฐ์กด ๋ถ€๋ชจ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ฐพ์•„ ํ•ด๋‹น ID๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Paper๊ฐ€ Achievement์˜ ์„œ๋ธŒํƒ€์ž…(parentId: "Achievement")์ธ ๊ฒฝ์šฐ:
  1. achievements ํ…Œ์ด๋ธ”์—์„œ ์•„์ง papers ํ…Œ์ด๋ธ”์— ๋Œ€์‘ํ•˜๋Š” ํ–‰์ด ์—†๋Š” ID๋ฅผ ์กฐํšŒ
  2. ํ•ด๋‹น ID๋กœ Paper fixture๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๋ถ€๋ชจ-์ž์‹ ๊ด€๊ณ„๋ฅผ ํ˜•์„ฑ
๋ถ€๋ชจ ์กฐํšŒ ์‹œ ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด id prop์˜ cone์— fixtureParentOverrides๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค:
๋ถ€๋ชจ ํ…Œ์ด๋ธ”์— ์„œ๋ธŒํƒ€์ž…์ด ์—†๋Š” ๋ ˆ์ฝ”๋“œ๊ฐ€ ๋ถ€์กฑํ•˜๋ฉด ํ•ด๋‹น ์—”ํ‹ฐํ‹ฐ์˜ fixture ์ƒ์„ฑ์„ ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค. ์‚ฌ์ „์— ๋ถ€๋ชจ ์—”ํ‹ฐํ‹ฐ์˜ fixture๋ฅผ ์ถฉ๋ถ„ํžˆ ์ƒ์„ฑํ•ด ๋‘์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

fetch - ์šด์˜ DB์—์„œ ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ

์‹ค์ œ ์šด์˜ DB(๋˜๋Š” ๊ฐœ๋ฐœ DB)์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€ Fixture DB์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ํ˜„์‹ค์ ์ธ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
๋Œ€ํ™”ํ˜• ๋ชจ๋“œ:
CLI ์˜ต์…˜: ๋ฐ์ดํ„ฐ ์„ ํƒ ์ „๋žต:
  • recent (๊ธฐ๋ณธ๊ฐ’): ์ตœ๊ทผ ๋ฐ์ดํ„ฐ๋ถ€ํ„ฐ ๊ฐ€์ ธ์˜ด
  • sample: ๋ฌด์ž‘์œ„ ์ƒ˜ํ”Œ๋ง
ํŠน์ง•:
  • ๊ด€๊ณ„๋œ ๋ฐ์ดํ„ฐ๋„ ํ•จ๊ป˜ ์ž๋™์œผ๋กœ ๊ฐ€์ ธ์˜ด (๊นŠ์ด 2 ๋ ˆ๋ฒจ๊นŒ์ง€)
  • ์™ธ๋ž˜ํ‚ค ์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ ์œ ์ง€

explore - DB ๋ฐ์ดํ„ฐ ์กฐํšŒ

DB์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒ๋งŒ ํ•ฉ๋‹ˆ๋‹ค. ์ €์žฅํ•˜์ง€ ์•Š๊ณ  ๋น ๋ฅด๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
๋Œ€ํ™”ํ˜• ๋ชจ๋“œ:
CLI ์˜ต์…˜: ๋ฐ์ดํ„ฐ ์„ ํƒ ์ „๋žต:
  • sample (๊ธฐ๋ณธ๊ฐ’): ๋ฌด์ž‘์œ„ ์ƒ˜ํ”Œ
  • recent: ์ตœ๊ทผ ๋ฐ์ดํ„ฐ
  • random: ์™„์ „ ๋ฌด์ž‘์œ„
  • ids: ํŠน์ • ID ์ง€์ •
  • query: ์ปค์Šคํ…€ ์ฟผ๋ฆฌ

์‚ฌ์šฉ ์›Œํฌํ”Œ๋กœ์šฐ

1. ์ดˆ๊ธฐ ์„ค์ •

ํ”„๋กœ์ ํŠธ ์‹œ์ž‘ ์‹œ ํ•œ ๋ฒˆ๋งŒ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

2. ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ์„ ํƒ

ํ…Œ์ŠคํŠธ์— ํ•„์š”ํ•œ ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

3. ํ…Œ์ŠคํŠธ ์ž‘์„ฑ

user.model.test.ts

4. ํ…Œ์ŠคํŠธ ์‹คํ–‰

ํ…Œ์ŠคํŠธ๊ฐ€ ์‹คํ–‰๋  ๋•Œ๋งˆ๋‹ค fixture๊ฐ€ ์ž๋™์œผ๋กœ ๋™๊ธฐํ™”๋ฉ๋‹ˆ๋‹ค.

Fixture ํŒŒ์ผ

์ €์žฅ ์œ„์น˜

ํŒŒ์ผ ํ˜•์‹

src/fixtures/users.json
ํŠน์ง•:
  • JSON ํ˜•์‹
  • Entity๋ณ„๋กœ ํŒŒ์ผ ๋ถ„๋ฆฌ
  • ๊ด€๊ณ„ ๋ฐ์ดํ„ฐ ์ž๋™ ํฌํ•จ
  • Git์œผ๋กœ ๋ฒ„์ „ ๊ด€๋ฆฌ

๊ด€๊ณ„ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ

์™ธ๋ž˜ํ‚ค ์ž๋™ ํฌํ•จ

Post๋ฅผ importํ•˜๋ฉด ์—ฐ๊ฒฐ๋œ User๋„ ์ž๋™์œผ๋กœ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

N:M ๊ด€๊ณ„ ์ฒ˜๋ฆฌ

๋‹ค๋Œ€๋‹ค ๊ด€๊ณ„ ํ…Œ์ด๋ธ”๋„ ์ž๋™์œผ๋กœ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ ๊ฒฉ๋ฆฌ

๊ฐ ํ…Œ์ŠคํŠธ๋งˆ๋‹ค ์ดˆ๊ธฐํ™”

๊ฒฉ๋ฆฌ ํšจ๊ณผ:
  • ๊ฐ ํ…Œ์ŠคํŠธ๊ฐ€ ๋…๋ฆฝ์ 
  • ํ…Œ์ŠคํŠธ ์ˆœ์„œ ๋ฌด๊ด€
  • ๋ณ‘๋ ฌ ์‹คํ–‰ ๊ฐ€๋Šฅ

ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ

์‹ค์ „ ์˜ˆ์ œ

๋ณต์žกํ•œ ๊ด€๊ณ„ ํ…Œ์ŠคํŠธ

ํŠน์ • ์‹œ๋‚˜๋ฆฌ์˜ค ๋ฐ์ดํ„ฐ

๋ฌธ์ œ ํ•ด๊ฒฐ

Fixture DB ์—ฐ๊ฒฐ ์‹คํŒจ

๋ฌธ์ œ: ์›๊ฒฉ fixture DB์— ์ ‘๊ทผ ๋ถˆ๊ฐ€
ํ•ด๊ฒฐ:
.env.test

๊ด€๊ณ„ ๋ฐ์ดํ„ฐ ๋ˆ„๋ฝ

๋ฌธ์ œ: ์™ธ๋ž˜ํ‚ค ์—๋Ÿฌ ๋ฐœ์ƒ
ํ•ด๊ฒฐ:

Fixture ์ถฉ๋Œ

๋ฌธ์ œ: ID ์ค‘๋ณต
ํ•ด๊ฒฐ:

๋ฒ ์ŠคํŠธ ํ”„๋ž™ํ‹ฐ์Šค

1. ์ตœ์†Œํ•œ์˜ ๋ฐ์ดํ„ฐ

2. ์˜๋ฏธ์žˆ๋Š” ๋ฐ์ดํ„ฐ

3. ๋ฒ„์ „ ๊ด€๋ฆฌ

4. CI/CD ํ†ตํ•ฉ

.github/workflows/test.yml

๋‹ค์Œ ๋‹จ๊ณ„

Testing

Naite ํ…Œ์ŠคํŠธ ํ”„๋ ˆ์ž„์›Œํฌ ์•Œ์•„๋ณด๊ธฐ

migrate

๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ด€๋ฆฌํ•˜๊ธฐ