빠른 참조

Jest 테스팅 프레임워크 치트시트

Jest 핵심 기능 참조 가이드: CLI 옵션, 주요 Matcher, Mock 함수 jest.fn 및 Spy, 스냅샷 테스팅, 비동기 테스트, Setup 및 Teardown 훅.

· 게시일

Jest는 단순함, 무설정(Zero-config), 즉각적인 스냅샷 테스트에 중점을 둔 강력한 자바스크립트 테스팅 프레임워크입니다.

테스트 실행 및 CLI 옵션 (CLI Flags)

jest                           # 전체 테스트 실행
jest --watch                   # 대화형 감시 모드로 테스트 실행
jest --coverage                # 코드 커버리지 리포트 생성
jest path/to/test.js           # 특정 테스트 파일 실행
jest -t "test name pattern"    # 테스트 설명 문자열 패턴으로 필터링
jest --runInBand               # 단일 프로세스에서 직렬로 테스트 실행

주요 매처 (Common Matchers)

// 참/거짓 및 일치 검증
expect(val).toBe(42);                  // 엄격한 동등성 비교 (Object.is)
expect(val).toEqual({ a: 1 });         // 객체 및 배열의 깊은 구조적 동등성 비교
expect(val).toStrictEqual({ a: 1 });   // 타입 프로토타입까지 엄격하게 검증
expect(val).toBeNull();
expect(val).toBeDefined();
expect(val).toBeTruthy();
expect(val).toBeFalsy();

// 숫자 및 크기 비교
expect(val).toBeGreaterThan(3);
expect(val).toBeGreaterThanOrEqual(3.5);
expect(val).toBeCloseTo(0.3, 5);       // 부동 소수점 연산 오차를 고려한 근사치 비교

// 문자열 및 배열
expect(str).toMatch(/regex/);
expect(arr).toContain('item');
expect(arr).toHaveLength(3);

// 예외 발생 검증
expect(() => compileCode()).toThrow();
expect(() => compileCode()).toThrow(ConfigError);

비동기 코드 테스트 (Asynchronous Code)

test('resolves with data', async () => {
  const data = await fetchData();
  expect(data).toHaveProperty('status', 200);
});

test('handles promise rejection', async () => {
  await expect(fetchData('invalid')).rejects.toThrow('Not Found');
});

Mock 함수 및 스파이 (jest.fn() & Spies)

const mockFn = jest.fn().mockReturnValue('mocked result');
mockFn('arg1');

expect(mockFn).toHaveBeenCalledTimes(1);
expect(mockFn).toHaveBeenCalledWith('arg1');

// Mocking module methods
const spy = jest.spyOn(api, 'getUser').mockResolvedValue({ id: 1, name: 'Alice' });
const user = await api.getUser(1);
expect(spy).toHaveBeenCalled();
spy.mockRestore(); // 원본 함수 구현으로 복원

스냅샷 테스트 (Snapshot Testing)

test('renders correctly', () => {
  const tree = renderer.create(<Button label="Submit" />).toJSON();
  expect(tree).toMatchSnapshot();
});

사전 설정 및 정리 훅 (Setup and Teardown)

beforeAll(() => database.connect());
afterAll(() => database.disconnect());
beforeEach(() => database.clear());
afterEach(() => jest.clearAllMocks());

관련 참조 문서

관련 주제