패스트캠퍼스 강의를 정리한 내용입니다.
"The RED : 프론트엔드 Back to the Basics : 지속 가능한 코드작성과 성능 향상법 by 김태곤"
*BDD(Behavior Driven Development) : 행동 주도 개발 방법론
TDD 3대 원칙 - 로버트 C. 마틴 (밥 아저씨, 클린 코더)
1. 실패할 테스트를 작성하기 전에는 아무런 프로덕션 코드도 작성하지 않는다.
2. 실패할 테스트 말고는 작성하지 않는다.
3. 현재 실패한 테스트를 만족시키는 코드 외에는 작성하지 않는다.
TDD 실습
369게임 - 숫자 배열을 넣으면 369게임 규칙에 따라 숫자를 읽는 문자열을 반환하는 프로그램
ex) game([1, 2, 3]) => '일,이,짝'
<script>
function game(arr) {
const hangul = '영일이삼사오육칠팔구';
const read = arr.map((num) => {
if(num === 3 || num === 6 || num === 9) {
return '짝';
}
return hangul[num]
});
return read.join(',');
}
// 테스트 코드
describe('369 게임', () => {
it('[1,2]를 넣으면 일,이가 반환되어야 함', () => {
expect(game([1,2])).toBe('일,이')
})
it('[1,2,3]은 일,이,짝으로 읽어야 함', () => {
expect(game([1,2,3])).toBe('일,이,짝')
})
it('[1,2,3,4,5,6]은 일,이,짝,사,오,짝으로 읽어야 함', () => {
expect(game([1,2,3,4,5,6])).toBe('일,이,짝,사,오,짝')
})
it('[1,2,3,4,5,6,7,8,9]은 일,이,짝,사,오,짝으로 읽어야 함', () => {
expect(game([1,2,3,4,5,6,7,8,9])).toBe('일,이,짝,사,오,짝,칠,팔,짝')
})
it('[10,11,12,13]은 십,십일,십이,짝으로 읽어야 함', () => {
expect(game([10,11,12,13])).toBe('십,십일,십이,짝')
})
it('[29,30,31,32,33]은 이십구,짝,짝,짝,짝짝으로 읽어야 함', () => {
expect(game([29,30,31,32,33])).toBe('이십구,짝,짝,짝,짝짝')
})
})
</script>