본문 바로가기
프로그래밍/자바스크립트

[React] 테스트 프레임웍 jest (2/4) - jest API

by pentode 2023. 6. 13.

jest 테스트 프레임웍에서 사용되는 함수에 대해서 알아봅니다. 테스트 파일은 파일명과 확장자 사이에 test를 넣으면 됩니다. 예로 index.js 파일의 테스트 파일을 만든다면 index.test.js 파일로 만들면 됩니다.

 

 

1. 테스트 함수 

 

- test(name, fn, timeout) : 테스트를 수행하는 가장 기본적인 함수 입니다. name은 테스트 이름이고, fn은 테스트를 수행하는 함수입니다. timeout은 밀리초 단위의 값으로 테스트가 수행되기를 얼마나 오랫동안 기다리는지 지정합니다. 기본값은 5초 입니다.

name은 동일한 describe 블럭 내에서 같은 값을 사용하면 Visual Studio Code에서 오류 표시가 납니다. 실행에는 문제가 없지만 구분을 위해서도 중복되지 않게 하는것이 좋겠습니다.

 

test('1 + 2는 3', () => {
    expect(sum(1, 2)).toBe(3);
});

 

- it(name, fn, timeout) : test(name, fn, timeout)과 완전히 동일한 함수 입니다. Mocha테스트 프레임웍에서는 it() 이 사용되는데 호환성을 위해 만든게 아닐까 생각됩니다.

 

- test.each(table)(name, fn, timeout) : table 배열의 모든 요소에 대해 테스트를 수행합니다. 배열의 요소는 테스트할 내용을 가진 배열이나 객체가 될 수 있습니다.

 

// 정수 배열을 사용한 경우
test.each([
  [1, 1, 2],
  [1, 2, 3],
  [2, 1, 3],
])('add(%i, %i)', (a, b, expected) => {
  expected(a + b).toBe(expected);
});

// 객체 배열을 사용한 경우
test.each([
  {a: 1, b: 1, expected: 2},
  {a: 1, b: 1, expected: 2},
  {a: 1, b: 1, expected: 2},
]}('.add($a, $b)', ({a, b, expected}) => {
  expect(a + b).toBe(expected);
});

 

사용할 수 있는 포맷 문자열은 https://jestjs.io/docs/api#testeachtablename-fn-timeout 에서 찾을 수 있습니다.

 

- test.only(name, fn, timeout) : 파일내에서 이 테스트만 실행됩니다. 큰 테스트 파일을 디버깅 할 때 사용한다고 합니다. test.only()가 여러개 있으면 이 테스트들만 모두 실행됩니다.

 

- test.skip(name, fn) : 이 테스트는 실행하지 않습니다. 필요 없어진 테스트를 삭제 보류할 때 등에 사용됩니다.

 

 

2. 테스트 함수 그룹

 

- describe(name, fn) : 관련 테스트들을 그룹화 합니다.

 

describe('테스트 그룹을 만듭니다.', () => {
    test('첫번째 테스트', () => {
        //
    }
    test('두번째 테스트', () => {
        //
    }
}

 

3. 전처리와 후처리

 

- beforeAll(fn, timeout) : 파일내의 테스트들이 실행되기 전에 한번 실행됩니다.

 

- beforeEach(fn, timeout) : 파일내의 각 테스트들의 앞에서 실행됩니다.

 

- afterAll(fn, timeout) : 파일내의 모든 테스트가 끝난후 한번 실행됩니다.

 

- afterEach(fn, timeout) : 파일내의 각 테스트들이 마친 후 실행됩니다.

 

jest의 전체  API는 공식사이트의 다음 주소에서 찾을 수 있습니다.

https://jestjs.io/docs/api

 

 

 

반응형