JEST란?
Jest는 Facebook에서 개발한 JavaScript 테스트 프레임워크로, 주로 React 애플리케이션을 테스트하는 데 사용됩니다. 하지만 React에 국한되지 않고, Node.js, Vue.js, Angular 등 다양한 JavaScript 환경에서 사용 가능합니다.
Jest는 유닛 테스트(Unit Test), 통합 테스트(Integration Test), **엔드 투 엔드 테스트(End-to-End Test)**를 지원하며, 사용하기 쉽고 설정이 간단한 것이 특징입니다.
Jest의 주요 특징
- 간편한 설정
별도의 복잡한 설정 없이 설치 후 바로 테스트 코드를 실행할 수 있습니다. - 스냅샷 테스트
컴포넌트나 함수의 출력 결과를 스냅샷으로 저장하고, 이후 변경사항을 비교해주는 기능을 제공합니다. UI 컴포넌트 테스트에 유용합니다. - 모의(Mock) 기능 제공
함수, 모듈, API 호출 등을 모의(Mock)하여 실제 의존성을 분리하고 테스트를 독립적으로 수행할 수 있습니다. - 강력한 에코시스템
내부적으로 JSDOM을 사용하여 브라우저 환경 없이도 DOM 테스트가 가능합니다. 또한, TypeScript 및 Babel과의 호환성도 뛰어납니다. - 병렬 테스트
멀티 스레드 방식으로 테스트를 병렬로 실행해 속도를 최적화합니다.
Jest 설치 및 기본 사용법
1. 설치
npm install --save-dev jest
2. 스크립트 추가
"scripts": {
"test": "jest"
}
3. 테스트 파일 작성 규칙
Jest는 기본적으로 다음 규칙에 따라 테스트 파일을 찾습니다.
__tests__ 디렉토리 내의 모든 파일
파일 이름이 .test.js 또는 .spec.js로 끝나는 경우
// sum.js
function sum(a, b) {
return a + b;
}
module.exports = sum;
// sum.test.js
const sum = require('./sum');
test('adds 1 + 2 to equal 3', () => {
expect(sum(1, 2)).toBe(3);
});
npm test
Jest의 주요 기능
테스트 블록 구조test 또는 it: 개별 테스트 케이스를 정의합니다
test('설명', () => {
// 테스트 로직
});
describe('설명', () => {
test('테스트 케이스 1', () => { ... });
test('테스트 케이스 2', () => { ... });
});
테스트에서 결과를 확인할 때 사용하는 함수입니다.
1. toBe: 값이 일치하는지 확인
2. toEqual: 객체나 배열의 값이 같은지 확인
3. toContain: 배열이나 문자열에 특정 값이 포함되었는지 확인
Mock 함수
모의(Mock) 함수로 외부 의존성을 대체하고 독립적인 테스트를 수행할 수 있습니다.
4. 비동기 코드 테스트
Jest는 Promise와 async/await를 사용한 비동기 코드 테스트를 지원합니다.
test('비동기 테스트', async () => {
const data = await fetchData();
expect(data).toBe('Hello');
});
5. Jest의 용어 정의
유닛 테스트(Unit Test)
애플리케이션의 개별 단위(함수, 모듈 등)를 테스트하는 방식으로, 특정 기능이 의도대로 동작하는지 확인합니다.
스냅샷 테스트(Snapshot Test)
UI 컴포넌트의 출력 결과를 파일로 저장하고, 이후 변경사항을 비교하여 의도치 않은 UI 변경을 방지합니다.
모의(Mock) 함수
실제 구현 대신, 가짜 동작을 정의한 함수로 테스트에서 사용됩니다.
테스트 커버리지(Test Coverage)
코드의 어느 부분이 테스트되었는지 나타내는 비율로, Jest는 기본적으로 테스트 커버리지를 제공하는 명령어를 지원합니다.
'내일배움캠프 TIL' 카테고리의 다른 글
TYPEscript란? 본캠프 01/20 (1) | 2025.01.20 |
---|---|
프로젝트 KPT회고 본캠프 TIL 01/17 (1) | 2025.01.17 |
HTTP, HTTPS, SSL, TLS 등 개념 본캠프 TIL 01/15 (0) | 2025.01.15 |
CPU의 기본이해 본캠프 TIL 01/13 (0) | 2025.01.13 |
업장 CRUD 완성 및 3계층 아키텍쳐 형식으로 분할 - 본캠프 TIL 01/10 (0) | 2025.01.10 |