Jest는 단순성에 초점을 맞춘 즐거운 JavaScript 테스트 프레임워크입니다.
Babel , TypeScript , Node , React , Angular , Vue 등을 사용하는 프로젝트에서 작동합니다 !
$ npm i --save-dev @nestjs/testing
describe() 및 it():describe() 함수는 관련된 테스트를 그룹화하고 설명하는 데 사용됩니다. 보통 테스트 스위트(Test Suite)라고도 합니다.it() 함수는 개별 테스트 케이스를 정의하고 테스트를 설명하는 데 사용됩니다. 이를 테스트 케이스 또는 테스트 스펙(Test Spec)이라고 합니다.describe('UserService', () => {
it('should return user information', () => {
// 테스트 코드 작성
});
});
beforeEach() 및 afterEach():beforeEach() 함수는 각 테스트 케이스가 실행되기 전에 실행되는 코드 블록을 정의합니다. 초기화나 설정과 같은 작업에 사용됩니다.afterEach() 함수는 각 테스트 케이스가 실행된 후에 실행되는 코드 블록을 정의합니다. 주로 리소스 정리나 초기화 작업 등에 사용됩니다.beforeEach(async () => {
// 초기화 코드
});
afterEach(async () => {
// 정리 코드
});
jest.fn():jest.fn() 함수는 모의 함수(Mock Function)을 생성합니다. 주로 외부 의존성을 가짜 함수로 대체할 때 사용됩니다. 특정 메서드의 호출 여부, 매개변수, 반환값 등을 검증하는 데 유용합니다.const mockFunction = jest.fn();
mockFunction('parameter');
expect(mockFunction).toHaveBeenCalledWith('parameter');
expect():expect() 함수는 테스트 단언문(assertion)을 만듭니다. 기대하는 동작과 실제 동작을 비교하여 테스트의 결과를 평가합니다.expect(5).toBe(5);
expect(user).toEqual({ id: 1, name: 'John' });
expect(service.method).toHaveBeenCalled();
jest.spyOn():jest.spyOn() 함수는 객체의 메서드를 spyOn하여 호출 정보를 수집하고 제어합니다. 메서드 호출 여부, 횟수, 매개변수 등을 확인하거나 가로챌 수 있습니다.const spy = jest.spyOn(service, 'methodName');
// ... 코드 실행 후
expect(spy).toHaveBeenCalled();
supertest:supertest 라이브러리는 HTTP 요청을 테스트하기 위한 유용한 도구입니다. NestJS 애플리케이션의 HTTP 엔드포인트를 호출하고 응답을 테스트할 수 있습니다.import * as request from 'supertest';
// ...
describe('AppController (e2e)', () => {
it('/GET cats', () => {
return request(app.getHttpServer())
.get('/cats')
.expect(200)
.expect('Content-Type', /json/)
.expect(res => {
expect(res.body.length).toBe(3);
});
});
});