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는 공식사이트의 다음 주소에서 찾을 수 있습니다.
[React] 테스트 프레임웍 jest (1/4) - 샘플 프로젝트 만들기
[React] 테스트 프레임웍 jest (2/4) - jest API
'프로그래밍 > 자바스크립트' 카테고리의 다른 글
[TypeScript] 타입 선언 ( : type )과 타입 단언( as type ) (0) | 2023.06.19 |
---|---|
[React] 테스트 프레임웍 jest (3/4) - jest Matchers (0) | 2023.06.17 |
[React] 테스트 프레임웍 jest (1/4) - 샘플 프로젝트 만들기 (0) | 2023.06.05 |
[React] 생명주기(Lifecycle)과 Error Boundary (0) | 2023.06.05 |
[React] 컴포넌트(Component)와 컴포넌트의 상태(State) (0) | 2023.06.05 |