Jest란?

김민수·2024년 1월 21일

테스트코드

목록 보기
1/3
post-thumbnail

Jest는 단순성에 초점을 맞춘 즐거운 JavaScript 테스트 프레임워크입니다.

Babel , TypeScript , Node , React , Angular , Vue 등을 사용하는 프로젝트에서 작동합니다 !

설치

$ npm i --save-dev @nestjs/testing

자주 사용되는 몇 가지 메서드 및 기능을 소개

  1. describe()it():
  • describe() 함수는 관련된 테스트를 그룹화하고 설명하는 데 사용됩니다. 보통 테스트 스위트(Test Suite)라고도 합니다.
  • it() 함수는 개별 테스트 케이스를 정의하고 테스트를 설명하는 데 사용됩니다. 이를 테스트 케이스 또는 테스트 스펙(Test Spec)이라고 합니다.
describe('UserService', () => {
  it('should return user information', () => {
    // 테스트 코드 작성
  });
});
  1. beforeEach()afterEach():
  • beforeEach() 함수는 각 테스트 케이스가 실행되기 전에 실행되는 코드 블록을 정의합니다. 초기화나 설정과 같은 작업에 사용됩니다.
  • afterEach() 함수는 각 테스트 케이스가 실행된 후에 실행되는 코드 블록을 정의합니다. 주로 리소스 정리나 초기화 작업 등에 사용됩니다.
beforeEach(async () => {
  // 초기화 코드
});

afterEach(async () => {
  // 정리 코드
});
  1. jest.fn():
  • jest.fn() 함수는 모의 함수(Mock Function)을 생성합니다. 주로 외부 의존성을 가짜 함수로 대체할 때 사용됩니다. 특정 메서드의 호출 여부, 매개변수, 반환값 등을 검증하는 데 유용합니다.
const mockFunction = jest.fn();
mockFunction('parameter');
expect(mockFunction).toHaveBeenCalledWith('parameter');
  1. expect():
  • expect() 함수는 테스트 단언문(assertion)을 만듭니다. 기대하는 동작과 실제 동작을 비교하여 테스트의 결과를 평가합니다.
expect(5).toBe(5);
expect(user).toEqual({ id: 1, name: 'John' });
expect(service.method).toHaveBeenCalled();
  1. jest.spyOn():
  • jest.spyOn() 함수는 객체의 메서드를 spyOn하여 호출 정보를 수집하고 제어합니다. 메서드 호출 여부, 횟수, 매개변수 등을 확인하거나 가로챌 수 있습니다.
const spy = jest.spyOn(service, 'methodName');
// ... 코드 실행 후
expect(spy).toHaveBeenCalled();
  1. 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);
      });
  });
});
profile
모바일 & 백엔드 개발자

0개의 댓글