Jest 단위 테스트

단위 테스트 입력값 정하기

Jest 테스트는 함수 내부 줄 수를 검증하는 도구가 아니라, 같은 입력에 대해 어떤 값, 예외, 호출, DOM 변화가 보장되어야 하는지 기록하는 안전망입니다. 준비, 실행, 단언의 경계를 분리할수록 실패 원인이 빨리 보입니다.

01

테스트 대상 좁히기

순수 함수, 컴포넌트, 서비스 로직처럼 하나의 책임을 선택하고 입력과 기대 결과를 먼저 적습니다.

범위
02

환경 준비

fixture, mock, beforeEach로 반복 준비를 정리하되 테스트마다 독립성을 유지합니다.

Arrange
03

행동 실행

함수 호출, 이벤트 발생, 비동기 완료처럼 테스트가 검증할 행동을 한 지점에 모읍니다.

Act
04

관찰 가능한 단언

반환값, 예외, DOM 텍스트, 호출 인자를 검증하고 내부 변수명이나 실행 순서에는 덜 의존합니다.

Assert
순수 함수
입력과 출력 표가 가장 강한 테스트 경계값, 빈 값, 잘못된 값이 핵심 케이스입니다.
value
비동기
Promise resolve와 reject를 명시적으로 기다림 return await expect(promise).rejects처럼 완료 시점을 테스트에 알려야 합니다.
async
Mock
네트워크, 시간, 랜덤을 통제해 결정성을 확보 mock 자체의 구현을 검증하는 테스트로 변질되지 않게 합니다.
경계

실패 메시지 · 독립성 · 리팩터링 내성 점검

실패 메시지 깨졌을 때 어떤 계약이 깨졌는지 한눈에 보이는 단언을 사용합니다.
독립성 테스트 순서가 바뀌어도 통과하도록 전역 상태를 매번 정리합니다.
리팩터링 내성 함수 내부 구현을 바꿔도 사용자 결과가 같으면 테스트가 유지되는지 봅니다.

비동기 오류 테스트

await expect(loadUser('missing-id'))
  .rejects
  .toThrow('USER_NOT_FOUND');