본문 바로가기
JavaScript/js 문법

테스트코드 만들기 - jest

by GREEN나무 2025. 3. 7.
728x90

1. 환경설정

Jest 설치

npm install —save-dev jest

 

설치 후 package.jsonscripts 부분에 추가.

"scripts": {
"test": "jest"
}

 

테스트를 실행할 때 명령어.

# 전체 테스트 파일 실행
npm test 

# 특정 테스트 파일 실행. 하나만 고르세요
npx jest path/to/your-test-file.test.js
npm test -- path/to/your-test-file.test.js

 


2. 기본적인 테스트 작성

Jest에서는 test 또는 it을 사용해서 테스트를 작성한다.

 

(테스트할 함수)
test("테스트 설명", () => {
expect("검증 대상").toXxx("기대 결과");
});
// sum.js (테스트할 함수)
function sum(a, b) {
return a + b;
}module.exports = sum;
// sum.test.js (테스트 코드)
const sum = require('./sum');
test('1 + 2는 3이어야 한다', () => {
expect(sum(1, 2)).toBe(3);
});

 

 

npm run test로 테스트코드 실행


3. 여러 가지 expect 매처 사용하기

Jest에서 제공하는 매처(matcher).

test('객체 테스트', () => {
const obj = { name: 'Jest' };
expect(obj).toEqual({ name: 'Jest' }); // 객체 비교
});

test('null 체크', () => {
expect(null).toBeNull();
});

test('참/거짓 체크', () => {
expect(true).toBeTruthy();
expect(false).toBeFalsy();
});

test('배열에 특정 값이 포함되어 있는지', () => {
expect([1, 2, 3]).toContain(2);
});

 

Jest에서 매처(Matcher) 는 테스트에서 기대하는 값과 실제 값을 비교하는 함수입니다.

Jest는 다양한 매처를 제공하며, 이를 사용하여 테스트의 기대값과 실제 결과가 일치하는지 확인할 수 있습니다.

자주 사용되는 Jest 매처 정리

카테고리 Matcher 설명
일반 비교 toBe(value) 엄격한 일치 (=== 비교)
toEqual(value) 객체/배열의 구조적 비교
toStrictEqual(value) toEqual과 유사하지만, 속성의 정의 여부까지 체크
/거짓 toBeTruthy() 값이 true로 평가되는지 확인
toBeFalsy() 값이 false로 평가되는지 확인
toBeDefined() 값이 undefined가 아닌지 확인
toBeUndefined() 값이 undefined인지 확인
toBeNull() 값이 null인지 확인
숫자 관련 toBeGreaterThan(number) 값이 특정 숫자보다 큰지 확인
toBeGreaterThanOrEqual(number) 값이 특정 숫자보다 크거나 같은지 확인
toBeLessThan(number) 값이 특정 숫자보다 작은지 확인
toBeLessThanOrEqual(number) 값이 특정 숫자보다 작거나 같은지 확인
문자열 toMatch(regex) 정규식 패턴과 일치하는지 확인
배열/리스트 toContain(item) 배열이나 문자열에 특정 요소가 포함되어 있는지 확인
예외 처리 toThrow() 함수가 예외를 발생시키는지 확인
toThrowError(error) 특정 오류 메시지 또는 오류 객체를 검사

4. 비동기 코드 테스트

// asyncFunction.js
function fetchData() {
return new Promise((resolve) => {
setTimeout(() => resolve('data'), 1000);
});
}module.exports = fetchData;
// asyncFunction.test.js
const fetchData = require('./asyncFunction');
test('비동기 데이터 가져오기', async () => {
const data = await fetchData();
expect(data).toBe('data');
});

 


5. Mock 함수 사용하기

Mock을 사용하면 특정 함수를 흉내 내서 원하는 동작을 테스트할 수 있다.

test('Mock 함수 사용 예제', () => {
const mockFn = jest.fn().mockReturnValue(42);
expect(mockFn()).toBe(42);
});

Jest에서 모킹 함수를 사용할 때, 상황에 따라 적절한 메서드를 선택해야 한다

  • mockReturnValue: 동기 함수의 반환값을 설정할 때 사용합니다.
  • mockResolvedValue: 비동기 함수가 성공적으로 완료되었을 때(Promise가 resolve된 경우) 반환할 값을 설정할 때 사용합니다.
  • mockRejectedValue: 비동기 함수가 실패했을 때(Promise가 reject된 경우) 거부할 값을 설정할 때 사용합니다.