๐Ÿ‘จโ€๐Ÿ’ป

CSS ์Œ“์ž„ ๋งฅ๋ฝ๊ณผ ์ปจํ…Œ์ด๋‹ ๋ธ”๋ก

์ตœ๊ทผ ์‹ค๋ฌด์—์„œ position: fixed ์Šคํƒ€์ผ์ด ์ ์šฉ๋œ ํ—ค๋”(FIXED HEADER)๊ฐ€ ์‚ฌํŒŒ๋ฆฌ์™€ ๊ฐ™์€ ์ผ๋ถ€ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์•„๋ž˜ ์Šคํฌ๋ฆฐ์ƒท๊ณผ ๊ฐ™์ด ์ „์ฒด ์˜์—ญ์œผ๋กœ ๋ฒ—์–ด๋‚˜๋Š” ์ด์Šˆ๋ฅผ ๊ฒช์—ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋Œ€ํ–ˆ๋˜ ๋™์ž‘์€ ํ—ค๋”๊ฐ€ ์™ผ์ชฝ ํŒจ๋„ ๋‚ด์— ๊ณ ์ •๋˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

๊ณ ์ • ํ—ค๋”๊ฐ€ ์ „์ฒด ์˜์—ญ์œผ๋กœ ๋ฒ—์–ด๋‚˜๋Š” ํ˜„์ƒ

position: relative๋กœ ์ •์˜๋œ ๋ถ€๋ชจ ์š”์†Œ(LEFT) ๋‚ด๋ถ€์— ๊ณ ์ •๋ ๊ฑฐ๋ž€ ์˜ˆ์ƒ์ด ๋น—๋‚˜๊ฐ€ ๊ฝค ๋‹นํ™ฉํ–ˆ๊ณ , ์›น ๊ฒ€์ƒ‰์œผ๋กœ transform: translateZ(0) ์Šคํƒ€์ผ์„ ์ ์šฉํ•ด ๊ธ‰ํžˆ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋ฆ„ CSS๋ฅผ ๋งŽ์ด ๋‹ค๋ค„์™”๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ ๋ ˆ์ด์•„์›ƒ ๊ธฐ์ดˆ ์ง€์‹์˜ ํ—ˆ์ ์ด ๋“œ๋Ÿฌ๋‚˜ ๋ฐ˜์„ฑํ•˜๋Š” ๊ณ„๊ธฐ๊ฐ€ ๋๊ณ , ๊ทผ๋ณธ์ ์ธ ์›์ธ๊ณผ ํ•ด๊ฒฐ์ฑ…์„ ์•Œ์•„๋ณธ ๊ณผ์ •์„ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์“ฐ์ด๋Š” ๋ฐฉ์‹๊ณผ ๋‹ฎ์€ ํ…Œ์ŠคํŠธ

Kent C.Dodds ๋‹˜์˜ ๋ธ”๋กœ๊ทธ๋ฅผ ๋ณด๋ฉด ์•„๋ž˜ ๋ฌธ์žฅ์ด ์ƒ๋‹นํžˆ ์ž์ฃผ ๋“ฑ์žฅํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฐ€ ๋งŒ๋“  Testing Library์˜ ์›์น™์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

The more your tests resemble the way your software is used, the more confidence they can give you.

์‚ฌ์šฉ์ž(end-user)๋Š” ์ œํ’ˆ์„ ์‚ฌ์šฉํ•  ๋•Œ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„๋˜์—ˆ๋Š”์ง€ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ˆˆ ์•ž์— ๋ณด์ด๋Š”(๋˜๋Š” ๊ท€๋กœ ๋“ฃ๋Š”) ํ…์ŠคํŠธ, ๋ฒ„ํŠผ, ์ž…๋ ฅ ์ฐฝ๊ณผ ๊ฐ™์€ UI๋ฅผ ์ธ์ง€ํ•˜๊ณ  ๊ทธ์— ๋งž๊ฒŒ ํ–‰๋™(์ž…๋ ฅ, ํด๋ฆญ, ์Šคํฌ๋กค ๋“ฑ)ํ•˜์ฃ .

ํ…Œ์ŠคํŠธ ๋„๊ตฌ ์—ญ์‹œ ์ œํ’ˆ์„ ์‚ฌ์šฉํ•˜๋Š” ๋˜ ํ•˜๋‚˜์˜ ์‚ฌ์šฉ์ž๋กœ ์ทจ๊ธ‰๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Testing Library์—์„œ๋Š” UI ์š”์†Œ๋ฅผ ์„ ํƒํ•˜๋Š” ๋ฐฉ๋ฒ•(query)์˜ ์šฐ์„  ์ˆœ์œ„๋ฅผ ์•„๋ž˜์™€ ๊ฐ™์ด ์ œ์‹œํ•ฉ๋‹ˆ๋‹ค.

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์—์„œ ํƒ€์ž…์„ ์ขํžˆ๋Š” ๋ฐฉ๋ฒ•

์‹ค๋ฌด์—์„œ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋ฅผ 1๋…„ ์ •๋„ ๋‹ค๋ฃจ๋ฉฐ ๋” ๊นŠ์€ ์ดํ•ด์˜ ํ•„์š”์„ฑ์„ ๋Š๋ผ๋˜ ์ฐธ์— '์ดํŽ™ํ‹ฐ๋ธŒ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ'๋ผ๋Š” ์ฑ…์„ ์ฝ๊ฒŒ ๋๊ณ  ์‹ค์šฉ์ ์ธ ๋‚ด์šฉ์ด ๋งŽ์•„ ์ •๋ฆฌํ•ด๋‘๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์˜ ์œ ๋‹ˆ์˜จ ์—ฐ์‚ฐ์ž๋ฅผ ํ™œ์šฉํ•˜๋ฉด ์—ฌ๋Ÿฌ ํƒ€์ž…์˜ ํ•ฉ์ง‘ํ•ฉ์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์–ด๋”˜๊ฐ€์—์„œ ์›ํ•˜๋Š” ํƒ€์ž…์ธ์ง€ ํ™•์ธํ•˜๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ 'ํƒ€์ž… ์ขํžˆ๊ธฐ(narrowing)'๋ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ๊ธ€์—๋Š” ํƒ€์ž…์„ ์ขํžˆ๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•˜๊ณ  ์‹ค๋ฌด์—์„œ ํƒœ๊ทธ๋œ ์œ ๋‹ˆ์˜จ(tagged union)์„ ํ™œ์šฉํ•ด ๊ฐœ์„ ํ–ˆ๋˜ ์‚ฌ๋ก€๋ฅผ ๋‹ด์•˜์Šต๋‹ˆ๋‹ค.

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์˜ ๊ตฌ์กฐ์  ํƒ€์ดํ•‘

์‹ค๋ฌด์—์„œ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋ฅผ 1๋…„ ์ •๋„ ๋‹ค๋ฃจ๋ฉฐ ๋” ๊นŠ์€ ์ดํ•ด์˜ ํ•„์š”์„ฑ์„ ๋Š๋ผ๋˜ ์ฐธ์— '์ดํŽ™ํ‹ฐ๋ธŒ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ'๋ผ๋Š” ์ฑ…์„ ์ฝ๊ฒŒ ๋๊ณ  ์‹ค์šฉ์ ์ธ ๋‚ด์šฉ์ด ๋งŽ์•„ ์ •๋ฆฌํ•ด๋‘๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์ฑ…์—๋Š” ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์˜ ํŠน์„ฑ ์ค‘ ํ•˜๋‚˜์ธ '๊ตฌ์กฐ์  ํƒ€์ดํ•‘'์ด๋ผ๋Š” ๊ฐœ๋…์ด ์ž์ฃผ ๋“ฑ์žฅํ•ฉ๋‹ˆ๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋• ํƒ€์ดํ•‘[^1] (duck typing) ๊ธฐ๋ฐ˜์ด๊ณ  ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ด๋ฅผ ๋ชจ๋ธ๋งํ•˜๊ธฐ ์œ„ํ•ด ๊ตฌ์กฐ์  ํƒ€์ดํ•‘์„ ์‚ฌ์šฉํ•จ์„ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํƒ€์ž…์€ '๋ด‰์ธ'๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

โ€” ์•„์ดํ…œ 4. ๊ตฌ์กฐ์  ํƒ€์ดํ•‘์— ์ต์ˆ™ํ•ด์ง€๊ธฐ

๊ตฌ์กฐ์  ํƒ€์ดํ•‘์˜ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ํŠน์„ฑ์€ ๊ฐ’์„ ํ• ๋‹นํ•  ๋•Œ ์ •์˜๋œ ํƒ€์ž…์— ํ•„์š”ํ•œ ์†์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋ฉด ํ˜ธํ™˜๋œ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค.