๋ชฉ๋กTDD (2)
DevLog ๐ถ

์ผ๋ง ์ ์ ์ฐํ ์ฝ์์ ์ฒด์ค ํผ๋๋ฐฑ 2 ๊ฐ์๋ฅผ ๋ค์ผ๋ฉด์, ๋ํธ๋ก์ดํธ ํํ (classicist) vs ๋ฐ๋ ํํ (Mockist)์ ๋ํด์ ๋ฃ๊ฒ ๋์๋ค. ๋ ๋ค ์ฒ์ ๋ค์ด๋ณธ ์ฉ์ด์ฌ์ ๊ถ๊ธํ ๋ง์์ ์ด๊ฒ์ ๊ฒ ์ฐพ์๋ณด๋ฉฐ ์์ฑํด๋ณด๊ณ ์ ํ๋ค. (์ ๋ฐ์ ์ธ ๋ด์ฉ์ ํ ์ฝํก ๋ฐํ ๋ด์ฉ์ ๋ง์ด ์ฐธ๊ณ ํ์์ต๋๋ค ๐โ๏ธ) โ๏ธ ๋จ์ ํ ์คํธ๊ฐ ๋ฌด์์ผ๊น? ๋จ์ ํ ์คํธ๋ ๋ค์๊ณผ ๊ฐ์ ํน์ง์ ๊ฐ์ ธ์ผ ํ๋ค. 1. Low-level ํ ์คํธ๋ฅผ ๋ค๋ฃจ์ด์ผ ํ๋ค. 2. ์ผ๋ฐ์ ์ธ ํ ์คํธ ๋๊ตฌ๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค. 3. ๋นจ๋ผ์ผ ํ๋ค. ์ฌ๊ธฐ์ ๋จ์๋ ๋ฌด์์ผ๊น? ๋ง์ฝ, ๊ธฐ๋ฅ ๋จ์๋ผ๊ณ ๊ตฌ์ฑ๋๋ค๋ฉด ๊ฐ์ฒด์งํฅ์ ๊ด์ ์์๋ ํด๋น ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ํด๋์ค์ ์งํฉ์ด ๋จ์๊ฐ ๋ ์๋ ์๋ค. ์ฐ๋ฆฌ๋ ์ด๋ฌํ ๋จ์ ํ ์คํธ๋ฅผ ์งํํ๊ธฐ ์ํด์, ์ด๋ ํ ๋จ์๊ฐ ์ํธ ์์ฉํ ์ ์๋..

์ฐํ ์ฝ ์์ ๋ค์๋ ๋ด์ฉ ์ค์์ ๊ฐ๋จํ๊ฒ ๋ด ์๊ฐ์ ์ ๋ฆฌํ๊ณ ์ถ์ด์ ์์ฑํ๋ ๊ธ! โจ ํ ์คํธ ์ฝ๋์ ๋ฒ์ ํ ์คํธ ์ฝ๋๋ ์ด๋ ์ ๋๋ก ์๊ฒ ๋ง๋ค์ด์ผ ๋ ๊น ๊ณ ๋ฏผ์ ๋ง์ด ํ๋ค. ์ฌ์ค ์ด์ ์๋ ํ ์คํธ ์ฝ๋๋ฅผ ๊ฑฐ์ ์์ฑํ ๊ฒฝํ๋ ์๊ณ , given-when-then๋ง ๊ตฌ๊ตฌ์ ์ ์๊ณ ์์์ด์ ํ ์คํธ ์ฝ๋์ ๋ฒ์๊น์ง๋ ์ ๋๋ก ์๊ฐํด ๋ณธ ์ ์์๋ค. (์ ์ง์ง ์๋์ด๋ค!) ๊ฐ์ธ์ ์ธ ์๊ฐ์ผ๋ก ํ ์คํธ ์ฝ๋๋ ํด๋น ๊ฐ์ฒด์ public ๋ฉ์๋์ ๋ํด์๋ ์ ๋ถ ํ ์คํธ๋ฅผ ํ๋ ๊ฒ ๋ง๋ค๊ณ ์๊ฐํ๋ค. ๋ฌผ๋ก , private ๋ฉ์๋๋ public์์ ํธ์ถํด์ ๊ฐ์ ์ ์ผ๋ก ํ ์คํธ ํ ์ ์๋๋ก ๋ง๋๋ ๊ฒ์ด ์ข๋ค๊ณ ์๊ฐํ๋ค. ์ด๋ฐ์ ํ์ด ํ๋ก๊ทธ๋๋ฐ์ ์งํํ ๋, private ๋ฉ์๋๋ฅผ ํ ์คํธํ๋ ค๊ณ ๋ฆฌํ๋์ ๊น์ง ์จ๊ฐ๋ฉด์ ์งํํ๋ค. ์ฐ์ , Car..