230722(ํ )
๐ค ์ฑ์ฅ์ผ์ง 6.0
์ฑ
ํ๋ณตํ ์ด๊ธฐ์ฃผ์์(์จ์ธ ๋ค์ด์ด)
์ ๋ด์ฉ์ ์๊ทน๋ฐ์ ์์ํ๋ ์๋ฐํ ์ฑ์ฅ๊ธฐ๋ก
์ด์์๋ ๊ฝ๊ณผ ์ฃฝ์ ๊ฝ์ ์ด๋ป๊ฒ ๊ตฌ๋ณํ๋๊ฐ?
์ฑ์ฅํ๊ณ ์๋ ๊ฒ์ด ์ด์ ์๋ ๊ฒ์ด๋ค.
์๋ช ์ ์ ์ผํ ์ฆ๊ฑฐ๋ ์ฑ์ฅ์ด๋ค!
๐พ (4.0)ํ์ต ํค์๋์์ ์ต๋ํ ๊ฐ๋จํ ์ ๋ณด ์ ๊ณต, ๊ณ ๋ฏผ์์ ๋ด ๊ฒฝํ์ ์์ธํ ์ ์!
๐ฅ (5.0)ํ์ต ํค์๋๋ ํ์ค์ ํต์ฌ์ผ๋ก๋ง ์ ๋ฆฌ, ์ฑ๊ณต/์คํจ ์ผ์ง ์์ฑํ๊ธฐ! ์ด ๋, ์คํจ์ ๊ฒฝํ์ ์์ธํ ์ ๊ธฐ!
๐ (6.0)<์์ ๊ฐํธ!!!> ๋งค์ผ ์ต๊ด์ ์ผ๋ก ํต์ฌ๋ง ์ ์ ์ ์๊ฒ ํ๋ ์ ๋ณ๊ฒฝ. ์ฑ๊ณต๋ณด๋จ ์คํจ์ ์ด์ ์ ๋ง์ถ๊ธฐ.
- ๐ (6.1)<์์ > ๋งค๋ฒ ์ฑ๊ณต, ์คํจ๋ฅผ ๋ฐ๋ก ์ ๋ ๊ฒ๋ณด๋จ ๊ฒฝํ์ผ๋ก ํํํ์
๐ ์ค๋์ ๊ฐ์
๋ญ๊ฐ ๊ทธ๋๋ ๊ณ ๋ฏผ์ ๋๋ด๊ณ ๋ฐฉํฅ์ ์ ์ก์์ ๊ฐ๋ ๊ฒ ๊ฐ์์ ๊ธฐ๋ถ์ด ์ข๋ค. ์ง๊ธ ์ด ๋ถ์ผ๊ฐ ๋๋ฌด ์ข์ ๋งํผ ๋ฐฉํฅ์ด ์กฐ๊ธ์ ์๋ชป๋์ด๋ ๊ด์ฐฎ์ผ๋(์ฌ์ค ์ณ์ ๋ฐฉํฅ์ด๋ ๊ฑฐ ์์ฒด๊ฐ ์์ผ๋๊น) ์ด์ฌํ ๊พธ์คํ ์ ๋์๊ฐ์. ๊ทธ๋ฆฌ๊ณ ๋ด๊ฐ ์ํ๋ ์ถ์ ์ด๋ฉด ๋๋ค. ์ด๋ฏธ ์ด ๊ฐ๋ฐ ์ธ์์ ์๊ฒ ๋ ๊ฒ๋งํด๋ ๋ฐ์ ์ฑ๊ณต์ด๋๊น!
๐ซง ์ค๋์ ๊ณ ๋ฏผ
A๋ผ๋ ํจ์์ ๋ํ test ์ฝ๋ ์์ฑ ์, B๋ผ๋ ํจ์์ ์์กดํ๋ ๊ฑด ๊ด์ฐฎ์๊ฐ?
์ค๋ LinkedList๋ฅผ ์ง์ ๊ตฌํํ๊ณ ๋ชจ๋ ๋ฉ์๋์ ๋ํด์ test ์ฝ๋๊น์ง ์์ฑํด๋ดค๋ค. ๊ทธ๋ฐ๋ฐ ํ ์คํธ ์ฝ๋ ๋ด์์๋ ๋ฉ์๋ ์ฌ์ฉ์ ๋ํ ์์กด์ฑ์ด ์๊ธฐ๋ ๊ฒ ๊ฐ์์ ์กฐ๊ธ ๊ณ ๋ฏผ์ด ๋๋ค. ์๋ฅผ ๋ค๋ฉด ์๋์ ์ฝ๋์ ๊ฐ๋ค.
describe("LinkedList์ deleteAt์ ํตํด ๋ฐ์ดํฐ๋ฅผ ํน์ index์์ ์ ๊ฑฐํ ์ ์๋ค.", () => {
const list = new LinkedList();
list.insertLast(0);
list.insertLast(1);
list.insertLast(2);
list.insertLast(3);
list.insertLast(4);
test("list์ 0๋ฒ์งธ ๊ฐ์ ์ ๊ฑฐํ๋ฉด data 0์ ๊ฐ์ ๊ฐ์ง Node๊ฐ ๋ฐํ๋๋ค..", () => {
const deletedValue = list.deleteAt(0)!.data;
expect(deletedValue).toEqual(0);
});
test("list์ 2๋ฒ์งธ ๊ฐ์ ์ ๊ฑฐํ๋ฉด data 3์ ๊ฐ์ ๊ฐ์ง Node๊ฐ ๋ฐํ๋๋ค.", () => {
const deletedValue = list.deleteAt(2)!.data;
expect(deletedValue).toEqual(3);
});
});
์ ์ฝ๋๋ LinkedList์ deleteAt ๋ฉ์๋๋ฅผ ํ ์คํธํ๋ ์ฝ๋์ด๋ค. ๊ทธ๋ฐ๋ฐ ์ด ํ ์คํธ ์ฝ๋๋ LinkedList์ insertLast ๋ฉ์๋์ ์์กดํ๊ณ ์๋ค. ๊ทธ๋์ ๋ง์ฝ insertLast ๋ฉ์๋๊ฐ ์๋ชป ๊ตฌํ๋์ด ์๋ค๋ฉด deleteAt ๋ฉ์๋๋ฅผ ํ ์คํธํ๋๋ฐ ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์๋ค. ์ด๋ฐ ๊ฒฝ์ฐ์๋ ์ด๋ป๊ฒ ํด์ผํ ์ง๊ฐ ์ค๋ ๊ฐ์ฅ ํฐ ๊ณ ๋ฏผ์ด์๋ค. ๊ณ ๋ฏผ์ ๋ํด ์ฐพ์๋ณธ ๊ฒฐ๊ณผ ์๋์ ๊ฐ์ ๋ฐฉ๋ฒ๋ค์ด ์์๋ค.
- ํ ์คํธ ๋์ ํจ์๊ฐ ์์กดํ๋ ํจ์๋ฅผ ํ ์คํธํ๋ ์ฝ๋๋ ๋ณ๋๋ก ์์ฑํ๋ค.
- ํ ์คํธ ๋์ ํจ์๊ฐ ์์กดํ๋ ํจ์๋ฅผ ํ ์คํธํ๋ ์ฝ๋๋ ํ ์คํธ ๋์ ํจ์๋ฅผ ํ ์คํธํ๋ ์ฝ๋๋ณด๋ค ๋จผ์ ์์ฑํ๊ณ ์คํํ๋ค.
- ํ ์คํธ ์ฝ๋์์๋ ํ ์คํธ ๋์ ํจ์๋ง์ ํ ์คํธํ๊ณ , ํ ์คํธ ๋์ ํจ์๊ฐ ์์กดํ๋ ํจ์๋ mock ํจ์๋ก ๋์ฒดํ๋ค.
1๋ฒ๊ณผ 2๋ฒ์ ๋ฐฉ๋ฒ์ ์ด๋ฏธ ์์ฑํด๋์ด์ ์ด๋ ๊ฒ๋ง ํด๋ ์์กดํ๋ ๋ฉ์๋์ ๋ํด test๊ฐ ๋๊ฑฐ๋๊น ๊ด์ฐฎ๊ฒ ์ง?
์๊ฐ์ ํ๋ค. ๋ค์์ 3๋ฒ ๋ฐฉ๋ฒ์ผ๋ก mock ํจ์๋ฅผ ์ ์ฉํด๋ด์ผ๊ฒ ๋ค.
โ๏ธ ์ค๋์ ๊ฒฝํ
์๋ฃ ๊ตฌ์กฐ๋ฅผ ๊ตฌํํ๊ณ ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ ๊ฒฝํ
๊ฐ๋จํ util ํจ์์ ๋ํด์ ํ
์คํธ ์ฝ๋๋ ์์ฑํด๋ดค์ง๋ง, ์ด๋ ๊ฒ ํ๋์ ์๋ฃ ๊ตฌ์กฐ๋ฅผ ๊ตฌํํ๊ณ ๋ฉ์๋๋ค์ ์ ๋ถ ํ
์คํธ ์ฝ๋๋ก ์์ฑํด๋ณธ ๊ฒฝํ์ ์ฒ์์ด์๋ค. ๋๋ถ์ ์ด์ ๊ณต์๋ฌธ์๋ฅผ ๋ณด์ง ์๊ณ
์ด๋์ ๋ ํ
์คํธ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ ๊ฒ ๊ฐ๋ค. ์์งํ ํ
์คํธ ์ฝ๋๊ฐ ์กฐ๊ธ ๊ท์ฐฎ๊ธด ํ์ง๋ง, ์ค์ ๋ก ํ
์คํธ ์ฝ๋๋ฅผ ์์ฑํ๋ ์์ค์๋ ๋ฆฌํฉํ ๋งํ๋ ๋ฐ์ ๋์์ด ๋ง์ด ๋ผ์ ์ด๋์ ํ
์คํธ ์ฝ๋๋ฅผ ์์ฑํ๋๊ตฌ๋
์ถ์๋ค.
ํจ์ํ ํ๋ก๊ทธ๋๋ฐ: ์ก์ ๊ณผ ๊ณ์ฐ, ๋ฐ์ดํฐ
์์ ๋ค์ด์ค๋ ํจ์ํ ์ฝ๋ฉ์ ๋ณด๋ฉด์ ์ฝ๋์ ๋ํ ๊ด์ ์ ์๋กญ๊ฒ ์ ๋ฆฝํ๊ณ ์๋ค. ๊ฐ์ฒด์งํฅ์ ์ฒ์ ์ด๋์ ๋ ์ดํดํ๋ค๊ณ ๋๊ผ์ ๋๋, ๋๋ฌด ์ ์ธ๊ณ์๋๋ฐ ์ง๊ธ ํจ์ํ ๋ํ ๊ทธ๋ฐ ๋๋์ด๋ค. ์๊ฐํด๋ณธ ์ ์ด ์๋ ๋ฐฉ์์ผ๋ก ์ฝ๋๋ฅผ ์ง๊ณ ๋ฐ๋ผ๋ณด๊ฒ ๋๋๊น ๋๋ฌด ์ ์ ํ๊ณ ์ฌ๋ฏธ์๋ค. ๊ทธ๋๋ง ๋ฆฌ์กํธ๊ฐ ํจ์ํ์ ๋ง์ด ๋ฎ์ ์์ด์ ๊ทธ๋ฐ์ง ์ดํดํ๊ธฐ๊ฐ ์กฐ๊ธ ๋ ์ฌ์ด ๊ฒ ๊ฐ๋ค. ๋ ์ด์ฌํ ๊ณต๋ถํด์ ํจ์ํ์ ๋ํ ์ดํด๋๊ฐ ๋์์ง๊ณ , ์ค์ ๋ฆฌ์กํธ ์ฝ๋๋ฅผ ์์ฑํจ์ ์์ด์๋ ์ค๋ ฅ์ด ๋์์ผ๋ฉด ์ข๊ฒ ๋ค.
๐พ ์ค๋์ ๊ตํ
์ธ์์ ์๋ฏธ์๋ ์๊ฐ์ ์๋ค. ๋ด๊ฐ ๊ฒช๋ ๋ชจ๋ ์๊ฐ๊ณผ ๊ฒฝํ๋ค์ด ์์ด๊ณ ์์ฌ์ ๋ฐ๋์ ๋น์ ๋ธ๋ค. ์ด๊ฑด ๋ถ์ ํ ์ ์๋ ์ฌ์ค์ด๋ค. ๊ทธ์ ๋๋ฅผ ๋ฏฟ๊ณ ๋์ ๊ธธ์ ๋์๊ฐ์!
๐ชต ์ฐธ๊ณ
- Jest ๊ณต์๋ฌธ์
- [์ฑ ] ์์ ๋ค์ด์ค๋ ํจ์ํ ์ฝ๋ฉ