TDD를 위한 Tool "Jest"

Crossfit & Development·2021년 12월 9일
0

TDD

목록 보기
2/2

코드 테스트를 위하여 개발된 Jest 라는 아주 훌륭한 툴이 있다.
공식문서는 아래와 같이 확인 가능.
제스트 공식문서
자세한 설치 및 환경 설정 방법은 공식문서 docs에 getting start를 참조하여 하나씩 설치해주면 된다.

여기에 추가적으로 알아두면 좋은 환경 설정의 방법이 있는데
package.json 에서

Scripts: {test: jest —watch}

여기에 watch all 을 붙혀주면 실시간으로 결과를 실행하게 되는데
이 상태에서 git ignore 파일을 만들어

node_modules/*

을 작성하면 커밋되고 난뒤의 경우 코드들은 자동으로 실행이 되지 않게된다.
그리고 커밋 전에는 스타트 된 이후 실시간으로 결과값을 송출한다.
(커밋이 됬다는 것은 이미 테스트가 완료되어 커밋되었다는 것이므로)

overview

const add = require('../add.js');

test('functionName', ()=>{
    //write a testcode
    expect(add(1,2)).toBe(3);
})

add.test.js 라는 파일로 테스트하고자 하는 작동함수 이름을 작성하고 expect 나 toBe 와 같은 테스트를 위해 내장된 메써드를 호출하여 기대되는 값과 실제로 나오는 값을 작성하여 준다.

Class 기능테스트 할떄 아래처럼 기능별로 작성이 가능하지만

Const classname = require(‘../play.js);
test(‘a’, ()=>{})
test(‘b’ ()=>{})

아래와 같이 describe 클래스로 묶어서 일괄 실행이 가능하다.

describe('Calculator', ()=>{
    it('inits with 0', ()=>{
        const cal = new Calculator();
        expect(cal, value).toBe(0);
    });
});

초기화값을 명시하고 it을 통해 클래스에 있는 내용 정의하기

** 클래스 내 함수를 실행할떄

const cal = new Calculator(); 

이런 오브젝트를 각각 넣어주게 되는데 이렇게 넣게되면 코드중복이 심하다 그렇다고 해서 이것을 일반 자바스크립트 쓰는것과 같이 변수로 정의해서 꺼내서 쓰는 것은 테스트에서 정확성을 기대하는 취지에는 맞지 않으므로
이 부분은 jest에서 제공하는 함수를 사용하도록 한다.

let = cal;
    beforeEach(()=>{
        cal = new Calculator();
    })

변수를 처음에 정의하고 해당 오브젝트를 콜백 형태로 넣어줌으로서 이후 오브젝트를 별도로 생성하지 않아도 자동으로 불러와서 실행한다.

클래스 내 한가지 기능에서 여러가지 값을 산출해보고자 할떄는 describe을활용하는 예제문

describe('divides',()=>{
        it('0/0 = NaN', ()=>{
            cal.divide(0);
            expect(cal.value).toBe(NaN);
        });
        it('1/0 = Infinity', ()=>{
            cal.set(1)
            cal.divide(0);
            expect(cal.value).toBe(Infinity);
        })
    })

jest —coverage
위 명령어를 사용하면 jest가 검토가능한 함수들을 전부 확인한다. 에러를 잡는데에는 그에 맞춰 에러 테스트를 별도로 정의하지 않으면 커버할 수 없는 함수라는 적색의 경고점이 뜨게 된다.(오른쪽이 에러가 정의되지 않았을떄 해당 테스트를 커버할 수 없다는 적색 경고문)
왼쪽은 오류 로직이 정의되어서 오류 여부까지 테스트하여 모든 것을 커버할 수 있다는 올 그린 표시

profile
새로운 기술, 새로운 운동을 탐구합니다.

0개의 댓글