본문 바로가기

Jest 본문

개발/알쓸코잡

Jest

자전하는명왕성 2023. 2. 23. 21:53

Jest

Jest 란 페이스북에서 만든 것으로, 완성한 각종 기능들이 정상 작동하는지 파악하는데 도움을 주는 라이브러리이다.

해당 라이브러리는 NestJS에 내장되어 있어 쉽게 사용이 가능하다는 특징을 가지고 있다.

 

Jest 가 필요한 이유에 대해 가볍게 설명하자면,

개발자의 의도대로 작동하고 있던 API 라고 하더라도

타 API나 함수가 개입하게 된 후에도 이전처럼 정상작동한다는 보장이 없을 뿐더러,

매번 기능을 추가할 때마다 기존의 API를 일일히 모두 정상작동하는지 확인할 수도 없는 노릇이다.

하지만 Jest 를 사용하게 되면 TestCode를 작성해 둘 경우 테스트를 통해

한번에 모든 기능들의 작동을 확인할 수 있다는 장점을 가진다.

 

 

테스트를 진행하는 방식으로는

  • unit test : 프로그램 내 가장 작은 단위를 테스팅하는 방식 (단위 테스트)
  • intergration test : 관계성이 높은 unit들을 모아 테스팅하는 방식 (통합 테스트)
  • e2e test : 사용자의 입장에서, 여러 시나리오를 구상해 시나리오에 따라 기능들을 테스팅하는 방식(ex, 결제 시나리오 등)

 

Jest 내에서의 테스트 코드 작성

describe('AppController', () => {
  let appController: AppController;	// AppController부터 받는 주입
  	// 이때, DB와 같이 실제 결과가 다른 API 작동에 영향을 미치는 경우,
    // Mocking(가짜값)을 임의로 만들어 테스팅을 진행한다.

	// test API || 함수가 실행 전 주입이 필요한 경우 beforEach를 활용한다.
  beforeEach(async () => { 
  	// AppController & AppService를 활용하는 테스팅모듈임을 선언한다.
    const app: TestingModule = await Test.createTestingModule({
      controllers: [AppController],
      providers: [AppService],
    }).compile(); 
	
    // app에서 AppController 를 가져온다.
    appController = app.get<AppController>(AppController);
  });

  describe('getHello', () => { // 여러 개의 테스트코드를 검증하기 위한 describe
    it('이 테스트의 검증 결과는 Hello World를 리턴해야 함', () => {
    	// appController.getHello 실행 시, 기댓값은 'Hello World!'
      expect(appController.getHello()).toBe('Hello World!');
    });
  });
});

 

 

'개발 > 알쓸코잡' 카테고리의 다른 글

HTTP & HTTPS & SSL  (0) 2023.02.25
FireWall(DMZ) & VPC  (0) 2023.02.25
DNS / Load Balancer  (0) 2023.02.22
TDD (Test Driven Development)  (0) 2023.02.22
마이크로서비스 아키텍쳐 (MSA)  (0) 2023.02.19
Comments