[typescript] 타입스크립트로 Nest.js 테스트 케이스 작성하기

Nest.js는 효율적이고 확장 가능한 서버 사이드 애플리케이션을 작성하기 위한 프레임워크입니다. 테스트 주도 개발(Test-Driven Development, TDD)은 소프트웨어 개발 프로세스에서 중요한 부분이며, Nest.js에서는 테스트 케이스를 작성하여 코드의 신뢰성을 높일 수 있습니다.

이 글에서는 TypeScript를 사용하여 Nest.js 애플리케이션의 테스트 케이스를 작성하는 방법에 대해 알아보겠습니다.

Nest.js 프로젝트 설정하기

먼저, Nest.js 프로젝트를 설정합니다. 터미널을 열고 다음 명령을 사용하여 Nest.js 애플리케이션을 생성합니다.

nest new my-nest-app

그런 다음 프로젝트 디렉토리에 이동하여 TypeScript로 개발할 수 있도록 테스트 환경을 설정합니다.

Jest와 Supertest 설치하기

Nest.js에서는 Jest를 사용하여 테스트를 작성하고 실행할 수 있습니다. 프로젝트에 Jest를 설치하려면 다음 명령을 실행합니다.

npm install --save-dev @nestjs/testing

또한 HTTP 요청을 테스트하기 위해 Supertest도 설치해야 합니다.

npm install --save-dev supertest

테스트 케이스 작성하기

이제 테스트 케이스를 작성할 준비가 되었습니다! 다음은 간단한 컨트롤러의 테스트 케이스를 작성하는 예시입니다.

import { Test, TestingModule } from '@nestjs/testing';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import * as request from 'supertest';
import { AppModule } from './app.module';

describe('AppController', () => {
  let app: TestingModule;

  beforeAll(async () => {
    app = await Test.createTestingModule({
      imports: [AppModule],
      controllers: [AppController],
      providers: [AppService],
    }).compile();
  });

  it('should return "Hello, World!"', (done) => {
    return request(app.getHttpServer())
      .get('/')
      .expect(200)
      .expect('Hello, World!')
      .end(done);
  });
});

위 코드에서는 AppController의 간단한 테스트 케이스를 작성하였습니다. 이 코드는 애플리케이션의 루트 엔드포인트에 대한 GET 요청을 수행하고, 결과를 확인하여 “Hello, World!” 메시지를 반환하는지 확인합니다.

테스트 실행하기

모든 테스트 케이스를 작성한 후에는 터미널에서 다음 명령을 사용하여 테스트를 실행할 수 있습니다.

npm run test

결론

Nest.js와 TypeScript를 사용하여 테스트 주도 개발을 실천하면 코드의 안정성과 신뢰성을 높일 수 있습니다. 테스트 케이스를 작성하여 애플리케이션의 각 부분이 예상대로 작동하는지 확인함으로써 버그를 미리 발견하고 안정적인 코드를 유지할 수 있습니다.

이상으로 Nest.js에서 TypeScript로 테스트 케이스를 작성하는 방법에 대해 알아보았습니다.

더 많은 정보를 원하시거나 더 깊이있는 학습을 원하시는 분들은 Nest.js 및 TypeScript 공식 문서를 참고하시기 바랍니다.

참고 자료