자바스크립트 기반 NestJS 애플리케이션의 자동화 테스트 방법

자동화된 테스트는 소프트웨어 개발 프로세스에서 중요한 부분으로 간주됩니다. 테스트를 통해 코드의 품질을 유지하고 버그를 신속하게 발견하고 해결할 수 있습니다. 자바스크립트 기반 NestJS 애플리케이션의 자동화된 테스트를 수행하는 방법에 대해 알아보겠습니다.

1. 테스트 프레임워크 선택

테스트를 자동화하기 위해서는 적합한 테스트 프레임워크를 선택해야 합니다. Jest는 자바스크립트와 TypeScript용으로 널리 사용되는 인기 있는 테스트 프레임워크입니다. Jest는 강력한 기능과 사용이 간편하다는 장점을 가지고 있습니다.

NestJS 프로젝트에 Jest를 추가하려면 다음과 같이 명령어를 실행합니다:

$ npm install --save-dev jest @types/jest

2. 테스트 환경 설정

Jest를 설치한 후에는 테스트 환경을 설정해야 합니다. “jest.config.js” 파일을 생성하고 다음과 같이 설정을 추가합니다:

module.exports = {
  preset: 'ts-jest',
  testEnvironment: 'node',
  testMatch: ['**/__tests__/**/*.spec.ts']
};

위 설정은 TypeScript를 사용하는 프로젝트에서 Jest를 설정하는 예시입니다. ts-jest 프리셋을 사용하여 TypeScript 파일을 테스트하고, 테스트 환경으로 Node.js를 사용하며, 파일 이름이 “.spec.ts”로 끝나는 파일을 테스트 대상으로 지정합니다.

3. 테스트 작성

Jest를 설정했다면 테스트를 작성할 수 있습니다. 테스트 파일은 일반적으로 *.spec.ts 형식으로 작성되며, 테스트할 함수나 모듈에 대한 테스트 케이스를 작성합니다.

import { Test, TestingModule } from '@nestjs/testing';
import { MyService } from '../my.service';

describe('MyService', () => {
  let service: MyService;

  beforeEach(async () => {
    const module: TestingModule = await Test.createTestingModule({
      providers: [MyService],
    }).compile();

    service = module.get<MyService>(MyService);
  });

  it('should return "Hello, NestJS!"', () => {
    expect(service.getHello()).toBe('Hello, NestJS!');
  });
});

위 예시에서는 MyService를 테스트하는 예시 코드입니다. describe 함수로 테스트 그룹을 생성하고, beforeEach 함수로 각 테스트 케이스 실행 전에 필요한 초기화 작업을 수행합니다. it 함수로 실제 테스트 케이스를 작성하고, expect 함수로 예상 값과 실제 값이 일치하는지를 검증합니다.

4. 테스트 실행

테스트 파일을 작성한 후에는 테스트를 실행해야 합니다. 다음의 명령어로 테스트를 실행할 수 있습니다:

$ npx jest

5. 테스트 커버리지 확인

Jest는 테스트 커버리지 리포트를 생성할 수 있는 기능을 제공합니다. 테스트 커버리지 리포트를 생성하려면 테스트 실행 시 --coverage 옵션을 추가합니다.

$ npx jest --coverage

위 명령어를 실행하면 테스트 커버리지 리포트 파일이 생성되며, 얼마나 많은 코드가 테스트되었는지를 확인할 수 있습니다.

6. 자동화된 테스트 실행

테스트를 자동으로 실행하려면 테스트 스크립트를 작성하여 지속적인 통합 빌드 또는 배포 파이프라인에 통합할 수 있습니다. 예를 들어, package.json 파일의 scripts 항목에 다음과 같이 스크립트를 추가할 수 있습니다:

{
  "scripts": {
    "test": "jest --coverage",
    "test:watch": "jest --watch",
    "test:ci": "jest --coverage --ci"
  }
}

위 예시는 npm run test 명령어로 테스트를 실행하고 커버리지 리포트를 생성하고, npm run test:watch 명령어로 테스트를 실행하되 파일이 변경될 때마다 자동으로 테스트를 실행하도록 설정합니다. npm run test:ci 명령어는 CI/CD 파이프라인에서 사용할 수 있는 명령어로 테스트를 실행하고 커버리지 리포트를 생성합니다.

위 방법을 통해 자바스크립트 기반 NestJS 애플리케이션의 자동화된 테스트를 수행할 수 있습니다. 테스트를 통해 애플리케이션의 안정성과 신뢰성을 확보하고, 유지보수 과정에서 버그를 미리 예방할 수 있습니다.

참고 자료: