728x90
1. 환경설정
Jest 설치
npm install —save-dev jest
설치 후 package.json의 scripts 부분에 추가.
"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된 경우) 거부할 값을 설정할 때 사용합니다.
'JavaScript > js 문법' 카테고리의 다른 글
js 배열 만들기 : Array.from(), Array.fromAsync(), Array.isArray(), Array.of() (1) | 2025.04.11 |
---|---|
jest.spyOn (0) | 2025.03.24 |
LocalTunnel을 이용한 로컬 서버 외부 공유 방법 (0) | 2025.02.24 |
사용자의 위치 사용하는 방법 - 항상 허용 (0) | 2025.02.24 |
Nestjs에서 Valkey 쓰기 - *.service.ts (0) | 2025.02.22 |