๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ“‚ ์•Œ์“ธ ์ง€์‹/์•Œ์•„๋‘๋ฉด ์ข‹์„7

ํ…Œ์ŠคํŠธ ๋”๋ธ” Mock vs. Stub vs. Spy ์ฐจ์ด ์•Œ์•„๋ณด๊ธฐ ๐Ÿ““ ํ…Œ์ŠคํŠธ ๋”๋ธ” ์ผ๋‹จ ์š”์•ฝํ•˜์ž๋ฉด Mock, Stub, Spy ๊ฐ๊ฐ์€ ํ…Œ์ŠคํŠธ์˜ ๋ชฉ์ ๊ณผ ์š”๊ตฌ ์‚ฌํ•ญ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ์‚ฌ์šฉํ•˜๊ณ , ์ข…์ข… ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜๊ธฐ๋„ ํ•œ๋‹ค. ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋‹ค ๋ณด๋ฉด ์œ„ ์„ธ ๊ฐ€์ง€ ๊ฐœ๋…์„ ๋งˆ์ฃผํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ์งš๊ณ  ๋„˜์–ด๊ฐ€ ๋ณด์ž. Mock, Stub, Spy๋Š” ์†Œํ”„ํŠธ์›จ์–ด ํ…Œ์ŠคํŠธ์—์„œ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ์šฉ์–ด๋กœ, ๋ชจ๋‘ ํ…Œ์ŠคํŠธ ๋”๋ธ”(test double)์˜ ์ผ์ข…์ด๋‹ค. ํ…Œ์ŠคํŠธ ๋”๋ธ”์ด๋ž€, xUnit Test Patterns์˜ ์ €์ž์ธ ์ œ๋ผ๋“œ ๋ฉ”์Šค์ž๋กœ์Šค(Gerard Meszaros)๊ฐ€ ๋งŒ๋“  ์šฉ์–ด๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๊ธฐ ์–ด๋ ค์šด ๊ฒฝ์šฐ ์ด๋ฅผ ๋Œ€์‹ ํ•ด ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์–ด์ฃผ๋Š” ๊ฐ์ฒด๋ฅผ ๋งํ•œ๋‹ค. (์ฐธ๊ณ : Test Double์„ ์•Œ์•„๋ณด์ž) ๊ฐ๊ฐ์€ ํ…Œ์ŠคํŠธ ์ค‘์— ์™ธ๋ถ€ ์‹œ์Šคํ…œ์ด๋‚˜ ๋ณต์žกํ•œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋Œ€์ฒดํ•˜๋Š” ๋ฐ์— ์‚ฌ์šฉ๋˜์ง€๋งŒ, ๊ทธ ๋ชฉ.. 2023. 11. 27.
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์•ž์— ๋ถ™๋Š” ๋‹จ์–ด๊ฐ€ ๊ถ๊ธˆํ•ด - '๋ชจ๋˜' ํŽธ ๋“ค์–ด๊ฐ€๋ฉฐ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ฒ˜์Œ ๊ณต๋ถ€ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด๋ผ๋ฉด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์•ž์— ๋ถ™๋Š” ์ˆ˜์‹์–ด์ธ '๋ชจ๋˜'์ด ๋ฌด์—‡์ธ์ง€ ๊ถ๊ธˆํ•  ๊ฒƒ์ด๋‹ค. ๊ฐœ๋ฐœ์ž๋“ค์€ ๋„ˆ๋ฌด๋‚˜๋„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” '๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ' ๋ผ๋Š” ๋‹จ์–ด๋ฅผ ๋” ์ž์„ธํžˆ ์•Œ์•„๋ณด์ž. ์ผ๋ฐ˜์ ์ธ ๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์˜๋ฏธ ๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ž€, ECMAScript6(2015) ์ดํ›„์˜ ๋ฐฉ๋ฒ•๋ก ์„ ๊ตฌํ˜„ํ•œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋‹ค. ํ•œ๋งˆ๋””๋กœ ์ •์˜ํ•˜์ž๋ฉด, ๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ์˜ '๋ชจ๋˜'์€ ํ˜„์žฌ์˜ ๊ฐœ๋ฐœ ํ‘œ์ค€๊ณผ ๊ด€ํ–‰์„ ๋”ฐ๋ฅด๋ฉฐ, ์ตœ์‹  ๋ธŒ๋ผ์šฐ์ €์™€ ์›น ๊ฐœ๋ฐœ ๋„๊ตฌ์—์„œ ์ง€์›๋˜๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฒ„์ „ ๋ฐ ๊ธฐ์ˆ ์„ ๊ฐ€๋ฆฌํ‚จ๋‹ค. ์ด๋Š” ECMAScript 6 (ES6) ์ดํ›„์˜ ๊ธฐ๋Šฅ๊ณผ ๊ฐœ์„ ๋œ ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ•๋ก ์„ ํฌํ•จํ•œ๋‹ค. ํ•„์ž๊ฐ€ ์ด์ „์— ์ž‘์„ฑํ•œ ๋ฅผ ๋ณด๋ฉด ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๊ทธ๊ฐ„ ์—ญ์‚ฌ์—์„œ ES6๋ฅผ ๋นผ๋†“๊ณ  ์ด์•ผ๊ธฐํ•  ์ˆ˜ ์—†์„ ์ •๋„.. 2023. 9. 15.
๋งˆํฌ๋‹ค์šด์œผ๋กœ ํ† ๊ธ€ ๊ธฐ๋Šฅ์„ ์“ธ ์ˆ˜ ์žˆ์„๊นŒ? 1. ๊ฒฐ๋ก  ์ผ๋‹จ ์“ธ ์ˆ˜๋Š” ์žˆ๋‹ค. ๊ฐ„ํ˜น README ๋“ฑ ๋งˆํฌ๋‹ค์šด์„ ํ™œ์šฉํ•ด ๋ฌธ์„œ๋ฅผ ์ž‘์„ฑํ•˜๋‹ค ๋ณด๋ฉด, ๋œ ํ•ต์‹ฌ์ ์ธ ๋‚ด์šฉ์ด๋‚˜ ์ด๋ฏธ์ง€๋“ค์„ ์ ‘์–ด๋‘๊ณ  ์‹ถ์„ ๋•Œ๊ฐ€ ์žˆ๋‹ค. ๋งˆ์น˜ ๋…ธ์…˜์˜ ํ† ๊ธ€๊ธฐ๋Šฅ์ฒ˜๋Ÿผ ์ ‘์—ˆ๋‹ค ํˆ๋‹ค ํ•˜๋Š” ๊ธฐ๋Šฅ ๋ง์ด๋‹ค. ์—„๋ฐ€ํžˆ ๋งํ•˜์ž๋ฉด, ๋งˆํฌ๋‹ค์šด์—์„œ๋Š” ํ† ๊ธ€ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋‚˜ html์˜ ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. 2. ์‚ฌ์šฉ ๋ฐฉ๋ฒ• ์•„๋ž˜์™€ ๊ฐ™์ด ์ž…๋ ฅํ•˜๋ฉด ๋œ๋‹ค. ํƒœ๊ทธ ์‚ฌ์ด์—๋Š” ํ† ๊ธ€ ์‚ผ๊ฐํ˜• ์˜†์˜ ํ…์ŠคํŠธ๋ฅผ ๋‚˜ํƒ€๋‚ผ ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๋”๋ถˆ์–ด, html ์‚ฌ์ด์˜ markdown์„ ์ธ์‹ํ•˜๊ธฐ ์œ„ํ•œ ์ฝ”๋“œ๋กœ ๋ผ๋Š” ๊ฒƒ์„ ๊ผญ ๋„ฃ์–ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค๊ณ  ํ•œ๋‹ค. ํ† ๊ธ€ ์ ‘๊ธฐ/ํŽผ์น˜๊ธฐ ํ…์ŠคํŠธ , ์ด๋ฏธ์ง€ ๋“ฑ๋“ฑ ์ž…๋ ฅ ๊ทธ๋Ÿผ ์•„๋ž˜์™€ ๊ฐ™์ด ๋‚˜ํƒ€๋‚œ๋‹ค. โ–ถ ํ† ๊ธ€ ์ ‘๊ธฐ/ํŽผ์น˜๊ธฐ 3. ์˜๋ฌธ์  ์„ ๊ผญ ๋„ฃ์–ด์ฃผ์–ด์•ผ ํ• ๊นŒ? ์‹คํ—˜์„ ํ•ด๋ณด์•˜๋‹ค. 1. ๋„ฃ์€ ๋ฒ„์ „: ํ† ๊ธ€์ด I.. 2023. 6. 30.
ํด๋ผ์ด์–ธํŠธ ๋ฐฐํฌ๋Š” ์‹ ๊ธฐํ•˜๊ณ  ์žฌ๋ฐŒ์–ด ๊ทธ๋ฆฌ๊ณ  ๊ธด์žฅ๋ผ ... ๐Ÿ› ๏ธ Todo ๋งŒ๋“ค์–ด ๋‘” ์›น์„ Github Actions์™€ Amazon S3๋ฅผ ํ™œ์šฉํ•ด ๋นŒ๋“œ ๋ฐ ๋ฐฐํฌํ•˜์—ฌ, ์‚ฌ์šฉ์ž๋“ค์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๊ธฐ ์ด๋ฒˆ ํด๋ผ์ด์–ธํŠธ ๋ฐฐํฌ์˜ 3๋‹จ๊ณ„ 1. Source : Github ๋ธŒ๋žœ์น˜์— ์ฝ”๋“œ๊ฐ€ commit ๋˜๋ฉด 2. Build : Github Actions์˜ YAML ํŒŒ์ผ์— ์ ํžŒ ๋ช…๋ น์–ด๋ฅผ ํ† ๋Œ€๋กœ Webpack์„ ์ด์šฉํ•ด build ํ•˜๊ธฐ 3. Deploy : Github Actions์˜ YAML ํŒŒ์ผ์— ์ ํžŒ ๋ช…๋ น์–ด๋ฅผ ํ† ๋Œ€๋กœ S3๋กœ build ๊ฒฐ๊ณผ๋ฅผ upload ํ•˜๊ธฐ ๐Ÿง YAML ํŒŒ์ผ์— ์ฝ”๋“œ ์ ๊ธฐ 1. ํ•ด๋‹น repository์˜ ๋ธŒ๋žœ์น˜ ์ด๋ฆ„์„ ์ ์–ด์ค€๋‹ค. ํ˜„์žฌ ๋ธŒ๋žœ์น˜ ๋ช…์„ ํ™•์ธํ•˜๋ ค๋ฉด git branch๋ผ๋Š” ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅ ํ›„ ํ™•์ธ, q๋ฅผ ๋ˆŒ๋Ÿฌ ์ข…๋ฃŒํ•˜๋ฉด ๋œ๋‹ค. name: client on:.. 2023. 6. 5.
์•Œ์•„๋‘๋ฉด ์“ธ๋ฐ์žˆ๋Š” package.json๊ณผ package-lock.json์˜ ์ฐจ์ด Node.js ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ, ํ„ฐ๋ฏธ๋„์— 'npm install'์„ ์ž…๋ ฅํ•˜๋ฉด ์•„๋ž˜ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด ์—ฌ๋Ÿฌ ํŒŒ์ผ๋“ค์ด ๊ธฐ๋ณธ์œผ๋กœ ์„ค์น˜๋œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์—ฌ๊ธฐ์„œ package.json์€ ๋ฌด์—‡์ด๊ณ , ๊ฑฐ๊ธฐ๋‹ค package-lock.json์€ ๋ฌด์—‡์ผ๊นŒ? ํ”„๋กœ์ ํŠธ ์‹œ์ž‘์— ์•ž์„œ ์ผ๋‹จ ๊ตฌ์กฐ๋ถ€ํ„ฐ ์•Œ๊ณ  ์‹œ์ž‘ํ•ด ๋ณด์ž. 1. package.json # package.json ์˜ˆ์‹œ { "name": "codingElla", "version": "0.1.0", "private": true, "dependencies": { "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", "re.. 2023. 4. 30.
ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž๊ฐ€ ์™œ UI/UX๋ฅผ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๊นŒ? ์•„๋ž˜ ๋‚ด์šฉ์€ ์šฐ์•„ํ•œํ…Œํฌ:  [10๋ถ„ ํ…Œ์ฝ”ํ†ก] ์œ„๋‹ˆ์˜ แ„‘แ…ณแ„…แ…ฉแ†ซแ„แ…ณแ„‹แ…ฆแ†ซแ„ƒแ…ณ แ„€แ…ขแ„‡แ…กแ†ฏแ„Œแ…กแ„‹แ…ฆแ„€แ…ฆ UXแ„…แ…กแ†ซ ์˜์ƒ์„ ์ฐธ๊ณ ํ•˜์—ฌ ๋ช‡๋ช‡ ์˜ˆ์‹œ ํ™”๋ฉด์„ ๋ง๋ถ™์˜€์Šต๋‹ˆ๋‹ค. ์œ ์ตํ•œ ๋‚ด์šฉ ๋ฐœํ‘œํ•ด์ฃผ์‹  ์œ„๋‹ˆ ๋‹˜๊ป˜ ๊ฐ์‚ฌ๋ฅผ ํ‘œํ•˜๋ฉฐ, ์˜์ƒ์„ ํ†ตํ•ด ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ์•„๋ž˜์— ์ •๋ฆฌํ•ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค. 0. ์ด ๊ธ€์„ ์“ฐ๊ฒŒ ๋œ ๊ณ„๊ธฐ๊ฐœ๋ฐœ์ž๋Š” ์ฝ”๋”ฉ์„ ์ž˜ํ•ด์•ผ ํ•˜๋Š” ๊ฑฐ ์•„๋‹Œ๊ฐ€?๊ธฐํš์€ ๊ธฐํš์ž๊ฐ€, ๋””์ž์ธ์€ ๋””์ž์ด๋„ˆ๊ฐ€ ํ•ด์•ผ์ง€ ์ด๋ฒˆ์ฃผ ๋ถ€ํŠธ์บ ํ”„ ์ˆ˜์—…์—์„œ๋Š” UI์™€ UX์— ๋Œ€ํ•ด ๋‹ค๋ฃจ์—ˆ๊ณ , ํ”ผ๊ทธ๋งˆ๋ฅผ ํ™œ์šฉํ•ด ์›น์‚ฌ์ดํŠธ๋ฅผ ํด๋ก ํ•ด ๋ณด์•˜๋‹ค. ์‚ฌ์‹ค ์ „์ž๋Š” ์–ด๋Š ์ •๋„ ์•Œ์•„์•ผ ํ•˜๋Š” ์ด์œ ๋ฅผ ์Šค์Šค๋กœ ๋‚ฉ๋“ํ–ˆ์ง€๋งŒ, ํ›„์ž๋Š” ์•„์ง๋„ ์ž˜ ๋‚ฉ๋“์ด ๋˜์ง€ ์•Š์•˜๋‹ค. '๊ฐ€๋œฉ์ด๋‚˜ ๊ฐœ๋ฐœ๋งŒ ํ•ด๋„ ๊ณต๋ถ€ํ•  ๊ฑฐ๋ฆฌ๊ฐ€ ๋„˜์ณ ํ•˜๋ฃจํ•˜๋ฃจ ์šฐ์„ ์ˆœ์œ„ ๋†’์€ ๊ณต๋ถ€๋งŒ ์ณ๋‚ด๊ธฐ์—๋„ ๋ฐ”์œ๋ฐ ์›ฌ ๋””์ž์ธ'์ด๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค์–ด ์‹ค์Šต ์ค‘ ํ˜„ํƒ€๊ฐ€ ์™”.. 2023. 4. 16.
Library vs. Framework ์ฐจ์ด์ ์„ ํ™•์‹คํ•˜๊ฒŒ ์ •๋ฆฌํ•˜๊ธฐ 0. ๋“ค์–ด๊ฐ€๊ธฐ์— ์•ž์„œ ๋ˆ„๊ตฐ๊ฐ€ ๋‚˜์—๊ฒŒ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํ”„๋ ˆ์ž„์›Œํฌ ๊ฐ„์˜ ์ฐจ์ด๋ฅผ ๋ฌผ์–ด๋ณธ๋‹ค๋ฉด ํ•œ ๋งˆ๋””๋กœ ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ์„๊นŒ? ๋‹ต์€ ์•„๋‹ˆ์—ˆ๋‹ค. ๊ฐœ๋ฐœ์„ ๊ณต๋ถ€ํ•˜๋‹ค ๋ณด๋ฉด ์ด ์„ธ ๊ฐ€์ง€๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ๋ฐฐ์šฐ์ง€๋งŒ ๊ฒฐ๋ก ์ ์œผ๋กœ ๊ฐ๊ฐ์ด ๋ฌด์—‡์ธ์ง€, ์ฐจ์ด๋Š” ๋˜ ๋ฌด์—‡์ธ์ง€ ๋ชจ๋ฅธ๋‹ค๋ฉด ํ™•์‹คํ•˜๊ฒŒ ์งš๊ณ  ๋„˜์–ด๊ฐ€๋ณด์ž. 1. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(Library) ๋ž€? Library๋Š” ๋‹จ์–ด ๊ทธ๋Œ€๋กœ ๋„์„œ๊ด€์ด๋‹ค. ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ์„ ์œ„ํ•ด ํ•„์š”ํ•œ ๊ธฐ๋Šฅ(ํ•จ์ˆ˜)๋“ค์„ ๋ชจ์•„ ๋†“์€ ์†Œํ”„ํŠธ์›จ์–ด๋‹ค. ๋น„์œ ํ•˜์ž๋ฉด, ์ž๋™์ฐจ๊ฐ€ ๊ตด๋Ÿฌ๊ฐˆ ๋•Œ ( = ํ”„๋กœ๊ทธ๋žจ์ด ์ œ์ž‘๋˜์–ด ๋Œ์•„๊ฐˆ ๋•Œ) ํ•„์š”ํ•œ ๋ฐ”ํ€ด, ํ—ค๋“œ๋ผ์ดํŠธ, ์—์–ด๋ฐฑ ๋“ฑ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ์žฌ์‚ฌ์šฉ์ด ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์œผ๋กœ ๋ฐ˜๋ณต์ ์ธ ์ฝ”๋“œ ์ž‘์„ฑ์„ ์—†์• ๊ธฐ ์œ„ํ•ด ์–ธ์ œ๋“ ์ง€ ํ•„์š”ํ•œ ๊ณณ์—์„œ ํ˜ธ์ถœํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก Class๋‚˜ Function์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ๊ฒƒ์ด๋‹ค. ๊ฐ€.. 2023. 4. 2.