๊ธ€ ์ž‘์„ฑ์ž: ์ด์ง€์›๐ŸŒฉ๏ธ

์ฑ…์„ ์ฝ๊ธฐ์— ์•ž์„œ Javascript๋ฅผ ์–ด๋Š ์ •๋„ ์•Œ๊ณ  ์žˆ๊ฑฐ๋‚˜, ํ˜น์€ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ํ•  ์ค„ ์•ˆ๋‹ค๋ฉด JavaScript ์žฌ์ž…๋ฌธํ•˜๊ธฐ (JS โ€‹ํŠœํ† ๋ฆฌ์–ผ)๋ฅผ ํ•œ ๋ฒˆ ์ฝ๊ณ  ์ฑ…์„ ์ฝ๋Š” ๊ฑธ ์ถ”์ฒœํ•œ๋‹ค.

 

1์žฅ์—์„œ ๊ฐœ๋ฐœํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•  ๋•Œ ์ •๋ง ๊ผผ๊ผผํ•˜๋‹ค๊ณ  ๋Š๊ผˆ๋‹ค. ํŠนํžˆ VS Code์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์น˜์™€ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•, ์„ค์ •์„ ์•Œ๋ ค์ฃผ๋Š” ๊ฑด ์ž…๋ฌธ์ž ์ž…์žฅ์œผ๋กœ์จ ๊ฐ€์ด๋“œ๋ผ์ธ์ด ์žˆ์–ด์„œ ์ข‹์•˜๋‹ค. ์‹œ์ž‘์ด ๋ฐ˜์ด๋‹ค!

 

Do it! ๋ฆฌ์•กํŠธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ •์„์„ ์ฝ์œผ๋ฉด์„œ ๊ฐ€์žฅ ์ข‹์•˜๋˜ ํŒŒํŠธ๋Š” 2์žฅ์ด์—ˆ๋‹ค. ๋‹ค๋ฅธ ๋ฆฌ์•กํŠธ ๋„์„œ๋“ค์€ ๋Œ€๋ถ€๋ถ„ ES6๋ฌธ๋ฒ•์„ ์ˆ˜๋กํ•˜์ง€ ์•Š๋Š”๋‹ค. ๊ทธ์— ๋ฐ˜ํ•ด ์ด ์ฑ…์€ 2์žฅ์—์„œ ES6์˜ ์ฃผ์š” ๋ฌธ๋ฒ•์ด ์ˆ˜๋ก๋˜์–ด์žˆ๋‹ค. ๋ฌธ๋ฒ•์„ ์„ค๋ช…ํ•  ๋•Œ๋Š” ๊ธฐ์กด Javascript ๋ฐฉ๋ฒ•์„ ์ฝ”๋“œ์™€ ํ•จ๊ป˜ ์„ค๋ช…ํ•˜๊ณ , ๊ทธ ํ›„์˜ ES6๋ฌธ๋ฒ•์„ ํ™œ์šฉํ•œ ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•œ๋‹ค. ์ฝ”๋“œ ๋น„๊ต๋ฅผ ํ†ตํ•ด ์–ด๋–ค ์ ์ด ๋‹ฌ๋ผ์กŒ๋Š”์ง€ ์‰ฝ๊ฒŒ ํŒŒ์•…์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๊ฐ ์ฑ•ํ„ฐ์˜ ๋งˆ์ง€๋ง‰ ๋ถ€๋ถ„์—๋Š” ์ง์ ‘ ๋งŒ๋“ค๋ฉด์„œ ๋ณต์Šตํ•  ์ˆ˜ ์žˆ์–ด์„œ ์•ž์„œ ๋ฐฐ์šด ๋‚ด์šฉ์„ ๋‹ค์‹œ ํ•œ ๋ฒˆ ๋˜์งš์„ ์ˆ˜ ์žˆ๋‹ค. ๋ณต์Šต ์ฝ”๋“œ์—๋„ ๋ถ€๋ถ„ ์„ค๋ช…์ด ์žˆ์–ด์„œ ์„ธ์‹ฌํ•จ์„ ๋Š๋‚„ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

์ปดํฌ๋„ŒํŠธ ์ƒ๋ช…์ฃผ๊ธฐ ๊ทธ๋ž˜ํ”„๋Š” ์ƒ์„ฑ์™„๋ฃŒ-๊ฐฑ์‹ ์™„๋ฃŒ ๋ถ€๋ถ„์ด ๋„ˆ๋ฌด ์˜ค๋ฐ€์กฐ๋ฐ€ํ•˜๊ฒŒ ์ƒ๋ช…์ฃผ๊ธฐ ํ•จ์ˆ˜๊ฐ€ ๋ชจ์—ฌ์žˆ์–ด์„œ ๋ณด๊ธฐ ๋ถˆํŽธํ–ˆ๋‹ค. ์ง€๋ฉด์„ ์ข€ ๋” ํ™œ์šฉํ•ด์„œ ํ‘œ์‹œํ–ˆ์œผ๋ฉด ์ข‹์•˜์„ ๊ฑฐ ๊ฐ™๋‹ค.

 

์ฑ…์„ ์ฝ์œผ๋ฉด์„œ ์•„์‰ฌ์› ๋˜ ๋ถ€๋ถ„์€ react-with-styles๋ฅผ ์‚ฌ์šฉํ•œ ๋ถ€๋ถ„์ด์—ˆ๋‹ค. ๊ตฌ๊ธ€๋ง์„ ํ•ด๋„ ๊ด€๋ จ ์ž๋ฃŒ๊ฐ€ ๋„ˆ๋ฌด ์—†๋‹ค. ์˜๋ฌธ ์ž๋ฃŒ๋„ ์ฐพ๊ธฐ๊ฐ€ ์–ด๋ ต๊ณ , ํ•œ๊ธ€ ์ž๋ฃŒ๋Š” ์•„์˜ˆ ์—†์—ˆ๋‹ค. ๐Ÿ˜ฅ styled-components์— ๋Œ€ํ•ด์„œ๋„ ๋‹ค๋ค„์กŒ์œผ๋ฉด ์–ด๋• ์„๊นŒ ํ•˜๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.

 

TDD๋Š” ๋“ค์–ด๋ณด๊ธฐ๋งŒ ํ•˜๊ณ  ํ•œ๋ฒˆ๋„ ํ•ด๋ณธ ์ ์ด ์—†์–ด์„œ ์ด ๋ถ€๋ถ„๋„ ์žฌ๋ฐŒ๊ฒŒ ์ฝ์—ˆ๋‹ค. it() ๋ฌธ๋ฒ•์— ๋Œ€ํ•œ ์„ค๋ช…์ด ์—†์–ด์„œ ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฑฐ ๊ฐ™๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐœ์ธ์ ์œผ๋กœ ์‹ค์Šตํ•˜๋ฉด์„œ ๋”ฑ ํ•œ๊ฐ€์ง€ ํ•ด๊ฒฐ ๋ชปํ•œ ๋ถ€๋ถ„์ด ์žˆ๋‹ค.

creat-react-app์€ ํŒŒ์ผ ์ด๋ฆ„์ด .test.js, .spec.js๋กœ ๋๋‚˜๋Š” ํŒŒ์ผ์ด๋‚˜ src/__tests__ ํด๋”์— ์ž‘์„ฑ๋œ ๋ชจ๋“  .js,.jsx ํŒŒ์ผ์„ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰์‹œํ‚ต๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ ์œ„์ฃผ ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ• ์‚ฌ์šฉํ•ด ๋ณด๊ธฐ ํŒŒํŠธ์—์„œ ๋‚˜์™€์žˆ๋Š” ์„ค๋ช…์ด๋‹ค. .test.jsx๋Š” ์‹คํ–‰์ด ๋˜๋Š”๋ฐ ์‹ค์Šต์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉํ•œ _spex.jsx ํŒŒ์ผ๋ช…์€ jest๊ฐ€ ์ธ์‹์„ ๋ชปํ–ˆ๋‹ค. ํด๋” ์ „์ฒด๋ฅผ ์ธ์‹ํ•œ๋‹ค๊ธธ๋ž˜ ์•„์˜ˆ ๋ฌด๊ด€ํ•œ ์ด๋ฆ„์œผ๋กœ ํŒŒ์ผ ์ด๋ฆ„์„ ์ง€์–ด๋„ ์ธ์‹์„ ๋ชปํ•ด์„œ ๊ฒฐ๊ตญ .test.jsx ํ˜•์‹์œผ๋กœ ์ €์žฅํ•ด์„œ ํ…Œ์ŠคํŒ…ํ–ˆ๋‹ค. ์™œ ๊ทธ๋Ÿฐ๊ฑธ๊นŒ...?๐Ÿ˜•

 

๋ฆฌ์•กํŠธ ์‹œ์ž‘ํ•˜๊ธฐ๋Š” ํ›„๋ฃจ๋ฃฉ ์ฝํ˜”๋Š”๋ฐ ๋ฆฌ์•กํŠธ ๊ณ ๊ธ‰ ๊ธฐ์ˆ  ๋”ฐ๋ผ ํ•˜๊ธฐ๋ถ€ํ„ฐ๋Š” ๋‚œ์ด๋„๊ฐ€ ์ œ๋ฒ• ์žˆ์–ด์„œ ์งง์€ ์‹œ๊ฐ„์•ˆ์— ์ตํžˆ๊ธฐ ๋ณด๋‹ค๋Š” ์‹œ๊ฐ„์„ ๋‘๊ณ  ์ฒœ์ฒœํžˆ ์ฝ์œผ๋ฉด์„œ ํ•™์Šตํ•˜๋Š” ๊ฒŒ ์ข‹์„ ๊ฑฐ ๊ฐ™๋‹ค.

 

๊ฐ€์ƒ ์ฝ”์ธ ๊ฑฐ๋ž˜์†Œ๋ฅผ ์ง์ ‘ ๋งŒ๋“ค๋ฉด์„œ ์ฑ…์„ ํ†ตํ•ด ํ•™์Šตํ•œ ๋ฆฌ์•กํŠธ ๊ธฐ์ˆ ๋“ค์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์–ด์„œ ์ข‹์•˜๋‹ค. ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“ค ๋•Œ ์–ด๋Š ์žฅ์—์„œ ๋ฐฐ์šด ๊ฑธ ํ™œ์šฉํ•˜๋Š” ์ง€ ์จ์ ธ์žˆ์–ด์„œ ํ•ด๋‹น ๋ถ€๋ถ„์„ ์ฐพ์•„ ๋ณต์Šตํ•  ๋•Œ ์šฉ์ดํ–ˆ๋‹ค. ๋˜ํ•œ ์•ž์—์„œ ์‹ค์Šตํ•˜๋ฉด์„œ ๋งŒ๋“  ์ปดํฌ๋„ŒํŠธ๋ฅผ ์žฌํ™œ์šฉํ•˜๋Š” ๋ถ€๋ถ„(Modal)์„ ์ฝ์œผ๋ฉด์„œ ์ด๋ž˜์„œ ๋ฆฌ์•กํŠธ๋ฅผ ์“ฐ๋Š”๊ฑด๊ฐ€? ๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.

 

Do it! ๋ฆฌ์•กํŠธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ •์„์€ ํ† ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ๋ฆฌ์•กํŠธ๋ฅผ ํ•™์Šตํ•˜๊ณ  ์‹ถ์€ ๋ฆฌ์•กํŠธ ์ž…๋ฌธ์ž์—๊ฒŒ ์ถ”์ฒœํ•˜๊ณ  ์‹ถ๋‹ค.


์ด ๊ธ€์€ ์ด์ง€์Šค ํผ๋ธ”๋ฆฌ์‹ฑ์—์„œ ๋„์„œ๋ฅผ ์ œ๊ณต๋ฐ›์•„ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฐ˜์‘ํ˜•