1. ๊ฐ์
22๋ 11์ 2์ผ 15์์ 2์ฃผ ์ฐจ ๋ฏธ์ ์๋ด ์ด๋ฉ์ผ์ด ๋์ฐฉํ๋ค. ์ผ์ฃผ์ผ ๋์ ์ด๋ฃจ์ด์ง ์ฐ์ํํ ํฌ์ฝ์ค ํ๋ฆฌ์ฝ์ค 2์ฃผ ์ฐจ ์ซ์ ์ผ๊ตฌ ๊ฒ์ ๋ฏธ์ ์ ๋ํ ๊ฐ๋จํ ์๊ฐ์ ์๊ฐ์ ์์ฑํ๋ค.
2. ๋ฏธ์ ์๊ฐ
ํ๋ฆฌ์ฝ์ค 2์ฃผ ์ฐจ์ ๋ฏธ์ ์ ์ซ์ ์ผ๊ตฌ ๊ฒ์์ ๋ง๋๋ ๊ฒ์ด์๋ค. ์ด์ ๊ณผ ๋ค๋ฅธ ์ ์ DOM๋ฅผ ์กฐ์ํ์ง ์๊ณ ์ฝ์๋ก ๊ฒ์์ ์งํํ๋ ๊ฒ์ด์๋ค. ํ๋ก ํธ์๋๋ฉด DOM๋ฅผ ์กฐ์ํ์ฌ ์น ํ์ด์ง์ ๋์ฐ๋ ๊ฒ์ด ์ค์ํ๋ค๊ณ ์๊ฐ์ ํ์ฌ ์๋ฌธ์ด ๋ค์์ง๋ง 2์ฃผ ์ฐจ๊ฐ ๋๋ ์ฝ์ํ(์ฝ์น๋ค๊ณผ์ ์๋ค ํ์)์์ ์ฝ์๋ก ๊ฒ์์ ์งํํ๋ ์ด์ ๋ฅผ ์ค๋ช ํด ์ฃผ์ จ๋ค. ๊ทธ ์ด์ ๋ ์ผ๋จ ์๋ฐ์คํฌ๋ฆฝํธ๋ผ๋ ์ธ์ด์๋ง ์ง์คํ ์ ์๋๋ก ํ๊ธฐ ์ํจ์ด์๋ค.
ํ๋ฆฌ์ฝ์ค 1์ฃผ ์ฐจ ๋ฏธ์ ์์ ์ถ๊ฐ๋ ์๊ตฌ ์ฌํญ๋ ์๋๋ฐ ์์ธํ ๋ด์ฉ์ ์๋์ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ๋ฉด ๋๋ค.
์ฐ์ํ ํ ํฌ์ฝ์ค 2์ฃผ ์ฐจ ์ซ์ ์ผ๊ตฌ ๊ฒ์ ๋ฏธ์ ์ ์ฅ์
3. ๊ธฐ๋ฅ ๋ชฉ๋ก ์์ฑ
ํ๋ฆฌ์ฝ์ค์ 1์ฃผ ์ฐจ ๋ฏธ์ ์ธ ์จ๋ณด๋ฉ ๋ฏธ์ ์ ์ฌ๋ฌ ๋ฌธ์ ๋ค์ด ์์์ง๋ง ๊ฐ๊ฐ์ ๋ฌธ์ ์์ ์๊ตฌํ๋ ์ฌํญ์ ๋ณต์กํจ์ด ์์๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ฅ ๋ชฉ๋ก์ ๋น ๋ฅด๊ฒ ์์ฑํ๊ณ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์๋ค. ํ์ง๋ง ์ด๋ฒ ํ๋ฆฌ์ฝ์ค 2์ฃผ ์ฐจ ๋ฏธ์ ์ ๊ทธ๋ ์ง ์์๋ค.
๋จผ์ ๋ ์๋ฒฝํ ๊ธฐ๋ฅ ๋ชฉ๋ก์ ์์ฑํ๊ณ ์ถ์๋ค. ์ด๋ค ํจ์๊ฐ ํ์ํ๊ณ ์ด๋ค ๊ฐ์ฒด๊ฐ ํ์ํ๊ณ ๋ ์ด๋ค ํ์ผ, ํด๋๋ก ๋๋์ด์ ์ฝ๋๋ฅผ ์์ฑํ ์ง ๋ฏธ๋ฆฌ ์ ํด๋๊ณ ์์์ ํ๊ณ ์ ํ์๋ค. ๊ทธ๋์ ๊ธฐ๋ฅ ๋ชฉ๋ก์ ์์ฑํ๋๋ผ ๊ผฌ๋ฐ ํ๋ฃจ๋ผ๋ ์๊ฐ์ด ๊ฑธ๋ ธ๋ค.
์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์ ๊ตฌ์ฒด์ ์ธ ๊ธฐ๋ฅ ๋ชฉ๋ก์ ์์ฑํ๋ ๋ง์ ์ฝ๋๋ฅผ ์์ฑํ ๋ ๋น ๋ฅด๊ฒ ๋ง๋ฌด๋ฆฌํ ์ ์์๋ค. ํ ์คํธ ์ฝ๋์ ํต๊ณผ๊น์ง ์ฝ 6์๊ฐ์ด ๊ฑธ๋ ธ๋ ๊ฒ์ผ๋ก ๊ธฐ์ตํ๋ค.
๋ํ ๊ผผ๊ผผํ๊ฒ ๊ธฐ๋ฅ ๋ชฉ๋ก์ ์์ฑํ๋ ์๊ตฌ ์ฌํญ์ ๋ํด ๋ ์์ธํ ์ดํด๋ณผ ์ ์์๋ค. ํนํ ์์ธ์ํญ์ ๋ง์ด ์๊ฐํด ๋ณผ ์ ์์ด ์ค๋ฅ๋ฅผ ์ก์๋ด๋๋ฐ ํฐ ๋์์ด ๋์๋ค.
๊ธฐ๋ฅ ๋ชฉ๋ก์ ํ์ ๋ํด ๋ชธ์ ๋๋ ์ ์์๋ ๋ฏธ์ ์ด์๋ค. ํ์ง๋ง ์๋ฌธ์ ์ด ๋ค์๋ค. ๊ธฐ๋ฅ ๋ชฉ๋ก์ด ์ด๋๊น์ง ๊ผผ๊ผผํด์ผ ํ๋๊ฐ์ ๋ํด ๊ณ ๋ฏผ์ ํ๊ฒ ๋์๋ค. ์์ ๊ธฐ๋ฅ์ ๋ง๋๋ ๊ฒ์๋ ์ฌ๋ฌ ํจ์๊ฐ ํ์ํ ๋๊ฐ ์๋ค. ์ด๋ ์ด๋ฐ ํจ์๋ค์ ๋ชจ๋ ๊ธฐ๋ฅ ๋ชฉ๋ก์ ์์ฑํ๋ ๊ฒ์ด ์ข์์ง, ์๋๋ฉด ์ฝ๋๋ฅผ ์์ฑํ๋ค๊ฐ ์ ์ฐํ๊ฒ ํจ์๋ฅผ ์ถ๊ฐ, ์ญ์ ํ๋ ๊ฒ์ด ์ข์์ง... ์ด๋ฐ ๊ณ ๋ฏผ์ด ๋ค์๋ค.
๊ทธ๋ฆฌ๊ณ ํ์ผ, ํด๋, ํจ์๋ช ๋ฑ๊ณผ ๊ฐ์ ์ธ๋ถ์ ์ธ ๋ด์ฉ์ ๋ฏธ๋ฆฌ ์๊ฐํ์ฌ ๊ธฐ๋ฅ ๋ชฉ๋ก์ ์ ๋ฆฌํ๋ ๊ฒ์ ํฌ๋จธ์น๋ผ๊ณ ์๊ฐ์ด ๋ค์๋ค. ์ฝ๋๋ฅผ ์์ฑํ๋ค๋ณด๋ฉด ๋ ์ข์ ๊ตฌ์กฐ๋ฅผ ์๊ฐํ ์ ์๊ณ ๋ฏธ์ณ ์๊ฐํ์ง ๋ชปํ๋ ํจ์๋ ๊ตฌํํด์ผ ํ ๊ฐ๋ฅ์ฑ์ด ์๊ธฐ ๋๋ฌธ์ ์ด๋ฐ ์ ์ ์ ์ฐํ๊ฒ ์๊ฐํ๋ฉฐ ๊ธฐ๋ฅ ๋ชฉ๋ก์ ์์ฑํ๋๋ก ํด์ผ๊ฒ ๋ค.
๋ค์ ๋ฏธ์
์ ๋ชฉํ๋ ๊ผผ๊ผผํ๊ณ ๋ช
ํํ์ง๋ง ๊ฐ๊ฒฐํ ๊ธฐ๋ฅ ๋ชฉ๋ก ์์ฑ
์ด๋ค.
2์ฃผ ์ฐจ ๋ฏธ์ ์ ๊ธฐ๋ฅ ๋ชฉ๋ก ๋งํฌ
4. ํจ์๊ฐ ํ ๊ฐ์ง ์ผ๋ง ํ๋๋ก ์ต๋ํ ์๊ฒ ๋ง๋ค์ด๋ผ.
์ด๋ฒ 2์ฃผ ์ฐจ ๋ฏธ์
์ ์ถ๊ฐ๋ ์๊ตฌ ์ฌํญ ์ค ํ๋๊ฐ ๋ฐ๋ก ํจ์๊ฐ ํ ๊ฐ์ง ์ผ๋ง ํ๋๋ก ์ต๋ํ ์ ๊ฒ ๋ง๋ค์ด๋ผ.
์ด๋ค. ์ค์ ์์ฑํ์๋ ์ฝ๋๋ฅผ ํตํด ๋ค์ ํ ๋ฒ ์๊ตฌ ์ฌํญ์ ๋ํด ์๊ฐํด๋ณด์.
const game = {
// ...
getResult: (computerAnswer, playerAnswer) => {
let ballCount = 0;
let strikeCount = 0;
[...playerAnswer].forEach((number, idx) => {
if (![...(computerAnswer + '')].includes(number)) return;
if ((computerAnswer + '')[idx] === number) strikeCount++;
else ballCount++;
});
return { ballCount, strikeCount };
},
printResult: (ballCount, strikeCount) => {
if (ballCount === 0 && strikeCount === 0) {
Console.print(OUTPUT.NOTHING);
return;
}
const ballCountPrint = ballCount !== 0 ? `${ballCount}${OUTPUT.BALL} ` : '';
const strikeCountPrint =
strikeCount !== 0 ? `${strikeCount}${OUTPUT.STRIKE}` : '';
Console.print(ballCountPrint + strikeCountPrint);
if (strikeCount === 3) Console.print(MESSAGE.SUCCESS);
},
// ...
};
์ ์ฝ๋์ getResult
ํจ์๋ ์ปดํจํฐ์ ์ ๋ต๊ณผ ํ๋ ์ด์ด์ ๋ต๋ณ์ ๋งค๊ฐ๋ณ์๋ก ๋ฐ์ ๋ณผ์ ๊ฐ์์ ์คํธ๋ผ์ดํฌ์ ๊ฐ์๋ฅผ ๊ฐ์ฒด๋ก ๋ฐํํ๋ ์ญํ ์ ํ๋ค.
printResult
ํจ์๋ ๋ณผ์ ๊ฐ์์ ์คํธ๋ผ์ดํฌ์ ๊ฐ์๋ฅผ ๋งค๊ฐ๋ณ์๋ก ๋ฐ์ ์ฝ์์ ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ ์ญํ ์ ํ๋ค.
์ฌ์ค ์์ ๋ ํจ์๋ ํ๋๋ก ๋ฌถ์ด์ ์์ฑํ ์ ์๋ค. ๋ฐ๋ก ์๋์ ๊ฐ์ด ๋ง์ด๋ค.
const game = {
// ...
printResult: (computerAnswer, playerAnswer) => {
let ballCount = 0;
let strikeCount = 0;
[...playerAnswer].forEach((number, idx) => {
if (![...(computerAnswer + '')].includes(number)) return;
if ((computerAnswer + '')[idx] === number) strikeCount++;
else ballCount++;
});
if (ballCount === 0 && strikeCount === 0) {
Console.print(OUTPUT.NOTHING);
return;
}
const ballCountPrint = ballCount !== 0 ? `${ballCount}${OUTPUT.BALL} ` : '';
const strikeCountPrint =
strikeCount !== 0 ? `${strikeCount}${OUTPUT.STRIKE}` : '';
Console.print(ballCountPrint + strikeCountPrint);
if (strikeCount === 3) Console.print(MESSAGE.SUCCESS);
},
// ...
};
printResult
ํจ์ ๋ด์์ ๋ณผ์ ๊ฐ์์ ์คํธ๋ผ์ดํฌ์ ๊ฐ์๋ฅผ ๋ชจ๋ ๊ตฌํ๊ณ ์ด๋ฅผ ๋ฐํ์ผ๋ก ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ์ฝ์๋ก ์ถ๋ ฅํ๋ค. ํ์ง๋ง ์ด๋ ๊ฒ ๋๋ฉด ํจ์๋ ํ ๊ฐ์ง ์ผ๋ง ํ์ง ์๋๋ค. ๊ฒฐ๊ณผ๋ฅผ ์ป๋ ์ผ๊ณผ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ ์ผ, ์ด ๋ ๊ฐ์ง์ ์ผ์ ํ๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ๋ ๋ถ๋ถ์ ๋๋์๋ค.
ํจ์๊ฐ ํ ๊ฐ์ง์ ์ผ๋ง ํ ์ ์๋๋ก ์ต๋ํ ์๊ฒ ๋ง๋ ๋ค๋ฉด ์ผ๋จ ํจ์์ ๊ธธ์ด๊ฐ ์งง์์ ธ ๊ฐ๋ ์ฑ์ด ์ข์์ง๊ณ ๋ง์ฝ ์ฝ๋๋ฅผ ์์ ํ๊ฒ ๋ ๋ ์์ ์ด ํ์ํ ์ฝ๋๋ฅผ ์ฝ๊ฒ ์ฐพ์ ์ ์๋ ์ฅ์ ์ ๊ฐ์ง๊ฒ ๋๋ค.
5. ํ ์คํธ ์ฝ๋๋ฅผ ํตํด ์์ฑํ ์ฝ๋๊ฐ ์ ์ ๋์ํจ์ ํ์ธํ๋ค.
2์ฃผ ์ฐจ ๋ฏธ์
์ ์๋กญ๊ฒ ์ถ๊ฐ๋ ์๊ตฌ ์ฌํญ ์ค ํ๋๋ Jest๋ฅผ ์ด์ฉํ์ฌ ๋ณธ์ธ์ด ์ ๋ฆฌํ ๊ธฐ๋ฅ ๋ชฉ๋ก์ด ์ ์ ๋์ํจ์ ํ
์คํธ ์ฝ๋๋ก ํ์ธํ๋ค.
์ด๋ค. Jest๋ผ... ์ฒ์ ์ ํ๋ ํ๋ ์์ํฌ์ด๋ค.
์ง๊ธ๊น์ง ํ ์คํธ ์ฝ๋๋ฅผ ํ๋ฒ๋ ์์ฑํ์ง ์์๋ค. ํ ์คํธ ์ฝ๋์ ํ์์ฑ์ ๋ํด ์๊ฐ์ ํด ๋ณธ์ ๋ ์์์ ๋ฟ ๋๋ฌ ํ ์คํธ๋ผ๋ ๊ฒ์ ์ฝ์๋ก ์ถ๋ ฅํ๋ ๊ฒ ๋ง์ผ๋ก๋ ์ถฉ๋ถํ๊ธฐ ๋๋ฌธ์ด๋ค.
์ด๋ฒ ๋ฏธ์ ์ ์ํด Jest๋ฅผ ํ์ตํ๋ฉฐ ํ ์คํธ ์ฝ๋๋ฅผ ์ง์ ์์ฑ๋ ํด ๋ณด์๋ค. ํ์ตํ๋ ๊ณผ์ ์ ํตํด ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฒ์ด ๋ฒ๊ฑฐ๋กญ๊ณ ๊ท์ฐฎ์ ๊ฒ์ด๋ผ ์๊ฐ์ ํ์ง๋ง ๋๋ฅผ ์ํด ๊ทธ๋ฆฌ๊ณ ๋์ ํจ๊ป ํ์ ํ๋ ๋๋ฃ๋ฅผ ์ํด ํ์ํ๋ค๋ ๊ฒ์ ๊นจ๋ซ๊ฒ ๋์๋ค.
์์ง Jest๋ก ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฒ์ ์ต์ํ์ง ์๋ค. ๊ณต์ ๋ฌธ์๋ฅผ ๋ณด๋ฉด ์์ฒญ ๋ง์ ๋ฉ์๋๋ค์ด ์กดํดํ๊ณ ํจ์๋ฅผ ๋ง๋๋? ๊ทธ๋ฐ ๋ฉ์๋๋ ์กด์ฌํ๋ค. ๋ชจ๋ ๋ด์ฉ์ ํ ๋ฒ์ ๊ณต๋ถํ๋ ๊ฒ ๋ณด๋ค, ํ์ํ ์ํฉ์ด ๋ค๊ฐ์ค๋ฉด TIL์ ์ ๋ฆฌํ๋ฉฐ ํ์ตํ๋๋ก ํ์.
์ด๋ฒ ๋ฏธ์
์ ํ
์คํธ ์ฝ๋๋ฅผ ์์ฑ ํ๋ฉด์ Jest์ ๋ฉ์๋ ์ค ๊ฐ์ฅ ๋ง์กฑํ๋ ๊ฒ์ describe.each(table)(name, fn, tiemout)
์ test.each(table)(name, fn, timeout)
์ด๋ค. ์์ธํ ๋ด์ฉ์ TIL์ Jest
ํํธ๋ฅผ ์ฐธ๊ณ ํ๋ฉด ๋๋ค.
6. ๋ณ์ ์ด๋ฆ, ํจ์ ์ด๋ฆ ์ง๊ธฐ
๋ฆฌํฉํ ๋ง ์ค ๊ฐ์ฅ ๋ง์ด ๋ฒ๋ณตํ๋ ๊ฒ์ด ๋ฐ๋ก ๋ณ์์ ํจ์์ ์ด๋ฆ ์ง๊ธฐ์๋ค. ์ ๋ง ์ ์ถ ๋ง๊ฐ ์๊ฐ ์ง์ ๊น์ง ์ด๋ฆ์ ์ด๋ป๊ฒ ์ง์ด์ผ ํ๋์ง ๊ณ ๋ฏผ์ ํ์๋ค. ์ง๊ธ ๋ค์ ๋ณด๋ฉด ๋ง์์ ๋ค์ง ์๋ ์ด๋ฆ๋ค์ด ๋์ ๋์ง๋ง ์ด๋ฐ ๊ณ ๋ฏผํ๋ ๊ณผ์ ๋ ์ดํ์ ์ข์ ๋ณ์๋ช , ํจ์๋ช ์ ์ง๊ธฐ ์ํ ๋ฐ๊ฑฐ๋ฆ์ด๋ผ๊ณ ์๊ฐํ๋ค.
์ค์ํ ํต์ฌ์ ์๋ฏธ ์๊ณ ์๋๊ฐ ๋๋ฌ๋๋ ์ด๋ฆ์ ์ง์
๋ผ๊ณ ์๊ฐํ๋ค. ๋ฏธ๋์ ๋ด๊ฐ ๋๋ ๋๋ฃ๋ค์ด ์ด๋ฆ๋ง ๋ณด๊ณ ๋ ํต์ฌ์ ํ์
ํ ์ ์๋ ์ด๋ฆ์ ์ง๋๋ก ํ์.
์ด๋ฆ ์ง๋ ๋ฐฉ๋ฒ์ ๋ํด ์ฌ๋ฌ ๋ธ๋ก๊ทธ์ ๊ธ์ ๋ณด๋ค๊ฐ ์ฌ๋ฐ๋ ๋ฌธ๊ตฌ๊ฐ ์์ด ๋จ๊ธด๋ค.
"์ข์ ๋ณ์๋ช ์๊ฐ๋ ๋๊น์ง ์จ ์ฐธ๋๋ค."
7. Conclusion
๋ฒ์จ 4์ฃผ๊ฐ์ ํ๋ฆฌ์ฝ์ค ์ค 2์ฃผ๊ฐ ๋ง๋ฌด๋ฆฌ๋์๋ค. ๋ญ๊ฐ... ์์ฌ์ด ๋ง์์ด ๋ ๋ค. ๋จ์ ์๊ฐ์ ๋ ์์ฐจ๊ฒ ๋ณด๋ผ ์ ์๋๋ก ํ์.
ํ์ฌ๋ ํ๋ฆฌ์ฝ์ค 3์ฃผ ๋ฏธ์ ์ ์งํํ๊ณ ์๋ค. ์์ง ๋๋์ง๋ ์์์ง๋ง ์ง๊ธ๊น์ง ํ๋ฆฌ์ฝ์ค๋ฅผ ํตํด ๋๋ ์ ์ ํ๋ฆฌ์ฝ์ค๊ฐ ํน์ ํ ์ง์์ ์ ๋ฌํ๋ ๊ฒ์ด ์๋๋ผ ํ์ตํ๋ ์ต๊ด, ์ฝ๋๋ฅผ ์์ฑํ๋ ์ต๊ด์ ๊ธฐ๋ฅด๋ ๊ฒ์ ์ด์ ์ด ๋ ๊ณผ์ ์ด๋ผ๊ณ ์๊ฐํ๋ค. ๋จ์ ์๊ฐ์ ์กฐ๊ธ์ด๋ผ๋ ๋ ํ๋ฆฌ์ฝ์ค์ ๋ น์๋ผ ์ ์๋๋ก ๋ ธ๋ ฅํ์! ํ์ดํ ์ด๋ค!
'๐ ์ฐ์ํํ ํฌ์ฝ์ค > ์ง์ ๊ณผ์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ฆฌ์ฝ์ค ์ต์ข ์ฝ๋ฉ ํ ์คํธ - ์ ์ฌ ๋ฉ๋ด ์ถ์ฒ (0) | 2023.04.10 |
---|---|
ํ๋ฆฌ์ฝ์ค 4์ฃผ ์ฐจ - ๋ค๋ฆฌ ๊ฑด๋๊ธฐ ๋ฏธ์ (0) | 2023.04.10 |
ํ๋ฆฌ์ฝ์ค 3์ฃผ ์ฐจ - ๋ก๋ ๊ฒ์ ๋ฏธ์ (0) | 2023.04.10 |
ํ๋ฆฌ์ฝ์ค 1์ฃผ ์ฐจ - ์จ๋ณด๋ฉ (0) | 2023.04.10 |
์ฐ์ํํ ํฌ์ฝ์ค ์๋ฅ์ง์ (0) | 2023.04.10 |