1. Coplit
2. Socrative
3. Koans
유닛 테스트(Unit Test)를 작성하여 우리가 작성한 함수가 주어진 입력값에 리턴하는 값과 기대하는 값이 같은지 비교한다.
유닛테스트는 method를 테스트하는 또다른 method이다.
하나의 유닛테스트는 하나의 메서드의 특정 루틴을 검사한다.
유닛테스트를 만드는 이유
버그를 줄이고 코드 퀄리티를 높이기 위해
- 프로그램이 크고, 메모리가 많이들고, 다른 리소스(데이터베이스 등)이 필요한 경우
로컬 환경에서 쉽게 코드를 실행하기 어렵기 때문에
유닛테스트를 만들어 빠르게 자신의 코드가 정상적으로 작동 하는지 확인할 수 있다.
- Despendency(의존성)가 있는 다른 클래스들에서 버그가 나는 것을 방지하기 위해
expect 함수를 사용하여 테스트하는 값과 기대값을 비교했다.
expect(테스트하는값).기대하는조건 expect(isEven(3)).toBeTruthy() => 'isEven(3)'의 결과값은 참인 것(truthy)이어야 한다' expect(1 + 2).toBe(3) => 'sum(1,2)의 결과값은 3이어야(toBe) 한다'
'기대하는조건'에 해당하는 함수를 matcher라고 한다.
Koans에서는 자스민 프레임워크(jasmine framework)에 있는 matcher들을 사용하여 비교했다.
Matcher that we used
- .toBeTruthy(), .toBeFalsy() : '기대하는 값이 truthy인지 falsy인지 확인하는 함수
- .toBe() : '테스트하는 값'과 '기대하는 값'이 같은지 확인.
(reference값 까지 같아야함)- .toEqual() : 배열의 요소나 객체의 속성이 서로 같은지 확인.
'=='연산자
'!='연산자
//'=='의 느슨함을 보여주는 예시
expect(0 == false).toBeTruthy();
expect('' == false).toBeTruthy();
expect([] == false).toBeTruthy();
expect(![] == false).toBeTruthy();
expect([] == ![]).toBeTruthy();
expect([] == '').toBeTruthy();
expect([] == 0).toBeTruthy();
expect([''] == '').toBeTruthy();
expect([''] == 0).toBeTruthy();
expect([0] == 0).toBeTruthy();
'==='연산자
'!=='연산자