์Šค๋ƒ…์ƒท ํ…Œ์ŠคํŠธ์˜ ํ•œ๊ณ„

date
2026-02-11
order
2

์Šค๋ƒ…์ƒท ํ…Œ์ŠคํŠธ์˜ ํ•œ๊ณ„

ํœด๋จผ ์—๋Ÿฌ

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ฝ”๋“œ๊ฐ€ ๊ณ„์† ๋ณ€ํ™”์— ๋”ฐ๋ผ UI ๊ตฌ์กฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ์Šค๋ƒ…์ƒท ํ…Œ์ŠคํŠธ๋Š” ์‹คํŒจํ•˜๊ฒŒ ๋˜๊ณ , ๊ฐœ๋ฐœ์ž๋Š” ์˜๋„ํ•œ ๋ณ€ํ™”์ด๋‹ˆ ์Šค๋ƒ…์ƒท์„ ์—…๋ฐ์ดํŠธ ํ•˜๊ฒŒ ๋œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ด ๊ณผ์ •์ด ์•„์ฃผ ๋งŽ์ด ๋ฐ˜๋ณต๋˜๋ฉด์„œ ์Šค๋ƒ…์ƒท ํ…Œ์ŠคํŠธ ์‹คํŒจ์˜ ์›์ธ์„ ๋ฉด๋ฐ€ํžˆ ์‚ดํŽด๋ณด์ง€ ์•Š๊ณ  ๋‹จ์ˆœํžˆ ๋ณ€๊ฒฝ๋œ UI ๊ตฌ์กฐ ๋•Œ๋ฌธ์ผ๊ฑฐ๋ผ ์ƒ๊ฐํ•˜๊ณ  ์‰ฝ๊ฒŒ ์—…๋ฐ์ดํŠธ๋ฅผ ํ•ด๋ฒ„๋ฆฐ๋‹ค๋ฉด, ๋ฒ„๊ทธ๋ฅผ ์ฐพ์ง€ ๋ชปํ•œ๋‹ค๋Š” ํ…Œ์ŠคํŠธ ๋ณธ์—ฐ์˜ ๊ธฐ๋Šฅ์„ ๋‹คํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ๋œ๋‹ค.

UI ๋ณ€๊ฒฝ์‚ฌํ•ญ

jsDOM ์Šค๋ƒ…์ƒท์€ DOM ํŠธ๋ฆฌ๋ฅผ ๋น„๊ตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๊ฒŒ ๋ฐ˜๋“œ์‹œ ์˜ฌ๋ฐ”๋ฅธ ๋ Œ๋”๋ง์„ ๋ณด์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค. CSS ์†์„ฑ์ด ๋ณ€๊ฒฝ๋˜๋ฉด ์ตœ๋Œ€ ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ์˜ ๋ ˆ์ด์•„์›ƒ์ด ์žฌ๋ฐฐ์น˜๋  ๋งŒํผ ํฐ ๋ณ€ํ™”๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์Šค๋ƒ…์ƒท ํ…Œ์ŠคํŠธ์—์„œ๋Š” ๊ฐ™์€ DOM ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€ํ™”๋ฅผ ๊ฐ์ง€ํ•ด๋‚ผ ์ˆ˜ ์—†๋‹ค.

TDD ๋ถ€์ ํ•ฉ์„ฑ

TDD ์‚ฌ์ดํด ๋‚ด์—์„œ ์Šค๋ƒ…์ƒท ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•  ๊ฒฝ์šฐ ์ƒํ™ฉ์— ๋งž๊ฒŒ ์Šค๋ƒ…์ƒท์„ ์—…๋ฐ์ดํŠธ ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ํ…Œ์ŠคํŠธ๊ฐ€ ํ•ญ์ƒ ์‹คํŒจํ•˜๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ž˜์„œ ๊ทธ ์‚ฌ์ดํด ์•ˆ์— ๊ฐœ๋ฐœ์ž๊ฐ€ ์—…๋ฐ์ดํŠธ ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•˜๊ธฐ ์œ„ํ•œ ๊ณผ์ •์ด ์ถ”๊ฐ€๋˜์–ด TDD ์‚ฌ์ดํด๊ณผ ๋งž์ง€ ์•Š๋Š” ๋ฐฉ์‹์œผ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๊ฒŒ ๋œ๋‹ค.

Don't Rely on Snapshot Tests #

Ever since I started working with React in 2016 Iโ€™ve had only one situation in which snapshot tests have caught a problem in my components. A call to new Date() without an argument had slipped and it always defaulted to the current date.

Besides this, snapshots have only been a cause for failed builds when a component is changed. The usual workflow is to make a change to the component, see that snapshots are failing, update them and proceed.

Donโ€™t get me wrong, they are a good sanity check but they are not a replacement for good component level tests. I avoid even creating them anymore.

  • Alex Kondov, Tao of React

์‹œ๊ฐ์  ํšŒ๊ท€ ํ…Œ์ŠคํŠธ

์œ„์˜ Alex Kondov์˜ ์–ธ๊ธ‰์ฒ˜๋Ÿผ ํ”„๋ก ํŠธ์—”๋“œ์—์„œ ์Šค๋ƒ…์ƒท ํ…Œ์ŠคํŠธ๋Š” ๊ฑฐ์˜ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ์ด ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•˜๊ณ  ์Šคํƒ€์ผ๊ณผ ๋ ˆ์ด์•„์›ƒ์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ์‚ฌํ•ญ๊นŒ์ง€ ๊ฐ์ง€ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ธ ์‹œ๊ฐ์  ํšŒ๊ท€ ํ…Œ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.