테스트 코드의 가치

TDD

JS로 테스트 코드 작성하는 방법

잘못될까봐 가장 걱정되는 영역을 집중적으로 테스트하자. 단순히 읽고 쓰기만 하는 접근자는 테스트할 필요가 없다.

  1. 제대로 계산하는지.

  2. 실패할 상황도 테스트하기.

  3. 자주 테스트하기. 몇 분 간격으로, 적어도 하루에 한 번.

  4. 불변임이 확실한 픽스처는 공유하기도 한다. 그래도 가장 선호하는 방식은 매번 새로운 픽스처를 만드는 것이다.

    describe('provide', function() {
        const asia= new Province(sampleProvinceData()); // 이렇게 하면 안 된다.
        it('shortfall', function() {
            expect(asia.shortfall).equal(5);
        });
        if('profit', function() {
            expect(asia.profit).equal(230);
        });
    });
    
    describe('provide', function() {
        let asia;
        beforeEach(function() {
            asia = new Province(sampleProvinceData());
        });
        it('shortfall', function() {
            expect(asia.shortfall).equal(5);
        });
        if('profit', function() {
            expect(asia.profit).equal(230);
        });
    });
    
  5. 세터는 보통 단순하여 버그가 생길 일이 없어 테스트를 잘 하지 않지만 복잡한 동작을 수행한다면 테스트해볼 만 함.

  6. 경계 조건 검사하기.

    1. 컬렉션이 비었을 때 어떤 일이 일어나는지 확인하기.
    2. 숫자형이라면 0일 때를 검사해보기.
    3. 음수 넣어보기.

용어

픽스쳐 (Fixture) : 고정 설치된 물건이라는 뜻처럼, 테스트 케이스 실행 전후에 항상 실행하는 함수를 의미합니다. 실제로는, 테스트 함수를 실행하기 위해 필요한 환경을 미리 구축하거나(setup) 실행 후 리소스를 정리하는(teardown) 함수, 그리고 이와 함께 사용되는 사용자 데이터(data)로 구성됩니다. 참고로, GLib에서는 각 테스트간 의존성을 피하기 위해 모든 테스트 케이스를 실행할때마다 매번 픽스쳐를 새로 구성하는 방식(fresh fixture)을 사용합니다.