자바스크립트 기반 NestJS 애플리케이션의 단위 테스트 작성 방법

NestJS는 자바스크립트와 TypeScript 기반의 프레임워크로, 백엔드 애플리케이션 개발에 많이 사용됩니다. 애플리케이션의 안정성과 견고성을 보장하기 위해 테스트 작성은 매우 중요합니다. 이번 블로그 포스트에서는 NestJS 애플리케이션의 단위 테스트 작성 방법에 대해 알아보겠습니다.

1. 단위 테스트의 중요성

단위 테스트는 개별적인 코드 단위가 의도한 대로 작동하는지 확인하는 것을 말합니다. 테스트 더블(Test Double)을 사용하여 외부 의존성을 가짜로 대체하고, 모의 객체(Mock Object)를 사용하여 각 단위 요소를 격리시킵니다. 이를 통해 코드의 동작 여부를 확인하고 예상치 못한 버그를 사전에 발견할 수 있습니다.

2. Jest를 이용한 단위 테스트 작성

NestJS 애플리케이션의 단위 테스트는 Jest를 사용하여 작성할 수 있습니다. Jest는 자바스크립트의 테스팅 프레임워크로, 기본적으로 NestJS 프로젝트에 포함되어 있습니다.

2.1. 테스트 환경 설정

먼저, 테스트를 작성하기 위해 Jest를 설치해야 합니다. 다음 명령어를 사용하여 Jest를 npm 패키지로 설치할 수 있습니다.

npm install --save-dev jest

2.2. 테스트 작성

NestJS의 단위 테스트는 각 모듈, 서비스, 컨트롤러 등의 단위에서 작성됩니다. 테스트 파일은 .spec.ts 확장자를 사용해야 Jest가 자동으로 인식할 수 있습니다.

예를 들어, UserService라는 서비스의 단위 테스트를 작성해보겠습니다.

// user.service.spec.ts

import { Test } from '@nestjs/testing';
import { UserService } from './user.service';

describe('UserService', () => {
  let userService: UserService;

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

    userService = moduleRef.get<UserService>(UserService);
  });

  describe('getUser', () => {
    it('should return user with given id', async () => {
      const user = await userService.getUser(1);
      expect(user.id).toEqual(1);
    });
  });
});

위의 예제에서는 UserServicegetUser 메서드를 테스트하고 있습니다. Test.createTestingModule 함수를 사용하여 NestJS 모듈을 생성하고, moduleRef.get 메서드를 사용하여 서비스를 인스턴스화합니다. 그런 다음, 테스트 케이스를 작성하고 expect 함수를 사용하여 예상 결과를 검증합니다.

2.3. 테스트 실행

모든 테스트를 실행하려면 터미널에서 다음 명령어를 실행하면 됩니다.

npm run test

Jest는 *.spec.ts 파일들을 자동으로 찾아서 실행하고 결과를 보여줍니다.

3. 마무리

NestJS 애플리케이션의 단위 테스트 작성은 코드의 신뢰성과 안정성을 확보하는 데 큰 도움이 됩니다. Jest를 사용하여 간단하고 효과적인 단위 테스트를 작성할 수 있습니다. 테스트를 작성함으로써 버그를 사전에 발견하고, 코드 변경에 대한 자신감을 얻을 수 있습니다.

이제 애플리케이션의 단위 테스트를 작성하는 방법을 알게 되었습니다. NestJS 프레임워크와 Jest를 함께 사용하여 안정적이고 견고한 애플리케이션을 개발하는 데 도움이 되길 바랍니다.


References:

#NestJS #단위테스트