Web Basic · Testing

Jest 단위 테스트의 책임선

단위 테스트는 함수 하나를 호출해 보는 절차가 아니라, 입력 계약과 실패 조건을 가장 작은 범위에서 고정하는 장치다.

01

계약 선택

테스트 이름은 내부 구현보다 사용자 관찰 결과를 기준으로 쓴다.

예: 빈 입력은 빈 목록을 반환한다
02

입력 고정

정상값, 경계값, 잘못된 값을 분리해 arrange 단계의 의미가 보이게 둔다.

03

행동 실행

act 단계에서는 하나의 행동만 호출해 실패 지점을 좁힌다.

04

결과 검증

expect는 값의 구조, 예외 메시지, mock 호출을 필요한 만큼만 확인한다.

toBe
원시값과 참조 동일성 숫자, 문자열, boolean처럼 정확히 같은 값이 필요한 경우
객체 비교에는 부적합
toEqual
객체 구조 비교 배열, plain object, 중첩 데이터 결과를 검증
함수·클래스 인스턴스는 의도를 먼저 확인
mock
협력 객체 호출 확인 콜백 호출 횟수와 인자, 순서를 관찰
호출 자체가 요구사항일 때만
throws
예외 케이스 고정 잘못된 입력에서 명확히 거부되는지 확인
에러 타입과 메시지를 함께 좁힌다

테스트 이름 · mock 범위 · 경계값 점검

테스트 이름 무엇을 보장하는지 한 문장으로 읽힌다.
mock 범위 외부 의존성만 대체하고 계산 로직은 실제로 실행한다.
경계값 빈 값, 최대·최소, 잘못된 타입이 포함돼 있다.
리팩터링 내성 내부 변수명이나 private 흐름을 검증하지 않는다.

단위 테스트 골격

test('빈 장바구니 합계는 0원이다', () => {
  const total = calculateTotal([]);

  expect(total).toBe(0);
        overflow-wrap: break-word;
        word-break: keep-all;
      });