TDD
๋ด์ฉ Update ์ค...!
TDD(Test Driven Development)๋ ํ ์คํธ๋ฅผ ๋จผ์ ๋ง๋ค๊ณ , ํ ์คํธ๋ฅผ ํต๊ณผํ ์ ์๊ฒ ์ค์ ์ฝ๋๋ฅผ ์์ฑํ๋ค. JEST๋ฅผ ์ด์ฉํด ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํด๋ณด์.
// sample.text.ts
// ๋ ์ซ์๋ฅผ ๋ํ๋ test ์ฝ๋ ์์ฑ
text('add', () => {
expect(add(1, 2)).toBe(3)
})
์ด๋ ๊ฒ ๋จผ์ ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑ ํ, ํด๋น ์ฝ๋๋ฅผ ํตํํ๋ ์ค์ ์ฝ๋๋ฅผ ์์ฑํ๋ค.
function add(x, y) {
return x + y
}
TDD ๊ณผ์
TDD ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ๋ค.
ํ ์คํธ ์์ฑ
์์ฑํ ํ ์คํธ๋ฅผ ํต๊ณผํ ์ ์๋ ๊ฐ์ฅ ๋น ๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ์ฝ๋ ์์ฑ
ํ ์คํธ ์ํ
ํ ์คํธ๊ฐ ํต๊ณผํ๋ฉด ์์ฑํ ์ฝ๋ ๋ฆฌํฉํ ๋ง
ํ ์คํธ ์ํ
ํ ์คํธ๊ฐ ํต๊ณผํ๋ฉด ์์ฑ
TDD๋ฅผ ํด์ผํ๋ ์ด์
๊ธฐ๋ฅ์ ์๊ตฌ์ฌํญ์ ๋ช ํํ๊ฒ ํ์ ํ ์ ์๋ค.
๊ฐ๋ฐ ํ ๋ฒ๊ทธ๊ฐ ๋ฐ์ํ ํ๋ฅ ์ด ์ค์ด๋ค๊ณ , ์ ์ง๋ณด์๊ฐ ์ฌ์์ง๋ค.
์ฌ์ฌ์ฉ์ฑ์ด ๋์ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋ค.
TDD ์ฐ์ตํด๋ณด๊ธฐ
์์ฌ๋์ Jest๋ฅผ ์ด์ฉํ TDD ์์ ๋ก ์ฐ์ต์ ํด๋ณด์.
ํ๋ก๊ทธ๋๋จธ์ค '๋ ๊ฐ ๋ฝ์์ ๋ํ๊ธฐ'๋ฅผ TDD๋ก ํ์ด๋ณด๊ธฐ
Step 1 - ๋ฌธ์ ๋ฅผ ์๊ฐํ๋ฉด์ ํ ์คํธ ์์ฑ
test('sample', () => {
expect(solve([2, 1, 3, 4, 1])).toEqual([2, 3, 4, 5, 6, 7])
});
Step 2 -
solve is not defined
error ํด๊ฒฐํ๊ธฐ
function solve() {
return null;
}
Step 3 - ํ ์คํธ ์ฝ๋ ๋น ๋ฅด๊ฒ ํต๊ณผ ์ํค๊ธฐ
function solve() {
return [2, 3, 4, 5, 6, 7]
}
test('sample', () => {
expect(solve([2, 1, 3, 4, 1])).toEqual([2, 3, 4, 5, 6, 7])
});
Step 4 - ์ค๋ณต ์ฝ๋ ์ ๊ฑฐํ๋ฉด์ ์ฝ๋ ๋ฆฌํฉํ ๋ง ๋ฐ๋ณต
๊ฐ๋จํ ํ ์คํธ๋ฅผ ๋ง๋ค์ด ์์ ํด๋ณธ๋ค.
test('simple', () => {
expect(solve([1, 2, 3])).toEqual([3, 4, 5])
})
function solve(numbers) {
if(numbers.length === 3) {
return [3, 4, 5]
}
}
๋ค์ ์์
function solve(numbers) {
if(numbers.length === 3) {
return [1 + 2, 1 + 3, 2 + 3]
}
}
๋ค์ ์์
function solve(numbers) {
if(numbers.length === 3) {
return [
numbers[0] + numbers[1],
numbers[0] + numbers[2],
numners[1] + numbers[2]
]
}
}
๊ณง ์ ๋ฐ์ดํธ ์์ !
Last updated