본문 바로가기

JS

Jest를 통해 unit테스트 진행하기

Jest 설치

npm install --save-dev jest
yarn add --dev jest

 

스크립트 추가 (package.json 파일에 추가)

  • 테스트파일이름은 example.test.js의 형태로 사용
{
  "scripts": {
    "test": "jest"
  }
}

 

실행 명령어

npm test
yarn test

 

 

코드 예시

describe('Path Components 관련', () => {
        test('경로에 요소를 추가하는 메소드 UNIX: appendComponent()', () => {
            const path = new Path('/home/user/documents/file.txt');
            path.appendComponent('newfolder');
            expect(path.pathComponents).toEqual([
                '/',
                'home',
                'user',
                'documents',
                'newfolder',
                'file.txt',
            ]);
        });
  • describe : 출력 시에 나오는 설명
    • describe내에 여러 describe 중첩이 가능

  • test : 테스트 케이스
  • expect : 예상되는 결과값을 실제 결과값과 어떤지 나타냄
    • toBe : 객체가 동일한지 테스트 (엄격한 동일성)
      • '==='로 비교해서 true가 나오는 동일성
    • toEqual : 객체나 배열의 값이 동일한지 테스트 (깊은 동일성)
      • 객체나 배열의 하위 요소 전부가 같아야함
    • toStrictEqual : 객체나 배열이 엄격하게 동일한지 테스트
    • toBeTruthy(), toBeFalsy() : 참인지 거짓인지 테스트
    • toBeNull / toBeUndefined / toBeDefined : 값이 null, undefined, 정의되어있는지 테스트
    • toBeGreaterThan / toBeGreaterThanOrEqual : 특정 수보다 큰지, 같거나 큰지 테스트
    • toBeLessThan / toBeLessThanOrEqual : 특정 수보다 작은지, 같거나 작은지 테스트
    • toBeCloseTo : 값이 특정 숫자와 근사치인지(부동 소수점 비교)를 테스트
    • toMatch : 문자열이 정규식 또는 문자열과 일치하는지 테스트
    • toContain : 배열이나 문자열에 특정 항목이 포함되어 있는지 테스트
    • toThrow / toThrowErrorMatchingSnapshot() : 함수가 예외를 던지는지 테스트
    • resolves / rejects : 비동기 Promise가 해결되는지 거부되는지 테스트
    • toHaveLength : 배열이나 문자열의 길이를 테스트
    • toHaveProperty : 객체에 특정 속성이 있는지 테스트
    • toBeInstanceOf : 객체가 특정 클래스의 인스턴스인지 테스트
       
       
       

 

테스트 파일로 인해 어떤 테스트케이스가 통과되었고 어떤 테이스케이스가 반려되었으며 런타임은 얼마나 걸리는지까지 전부 확인가능