서버리스 환경에서의 단위 테스트

이번 장에서는 서버리스 앱을 위한 단위 테스트 작성 방법을 살펴보겠습니다. 일반적으로 여러분은 비즈니스 로직 일부를 테스트하고 싶을 수 있습니다.

우리가 사용하는 템플릿은 이를 돕기 위한 설정을 포함하고 있습니다. 이 템플릿은 Vitest를 사용합니다.

테스트 작성하기

이전 챕터에서 추가한 사용자 요금 계산 비즈니스 로직을 테스트해 보겠습니다.

Change indicator packages/core/src/billing/test/index.test.ts에 새 파일을 만들고 다음 내용을 추가합니다.

import { test, expect } from "vitest";
import { Billing } from "../";

test("최저 요금제", () => {
  const storage = 10;

  const cost = 4000;
  const expectedCost = Billing.compute(storage);

  expect(cost).toEqual(expectedCost);
});

test("중간 요금제", () => {
  const storage = 100;

  const cost = 20000;
  const expectedCost = Billing.compute(storage);

  expect(cost).toEqual(expectedCost);
});

test("최고 요금제", () => {
  const storage = 101;

  const cost = 10100;
  const expectedCost = Billing.compute(storage);

  expect(cost).toEqual(expectedCost);
});

이 코드는 간단합니다. 3개의 테스트를 추가하고 있습니다. 각 테스트는 요금제 구조의 다른 단계를 검증합니다. 사용자가 10개, 100개, 101개의 노트를 저장하려는 경우를 테스트하고, 계산된 비용이 예상 비용과 일치하는지 확인합니다.

테스트 실행하기

이제 테스트를 실행해 보겠습니다.

Change indicator packages/core/ 디렉토리에서 다음 명령어를 실행하세요.

$ npm test

다음과 같은 결과가 출력됩니다.

✓ src/billing/test/index.test.ts (3)
  ✓ Lowest tier
  ✓ Middle tier
  ✓ Highest tier

Test Files  1 passed (1)
     Tests  3 passed (3)

내부적으로 이 명령어는 sst shell vitest를 실행합니다. sst shell CLI는 연결된 리소스를 모두 연결합니다. 이를 통해 테스트가 애플리케이션 코드와 동일한 접근 권한을 가지도록 보장합니다.

이제 단위 테스트 설정이 완료되었습니다. 이 테스트는 간단하지만, 앞으로 더 많은 테스트를 추가하는 방법에 대한 아이디어를 제공할 것입니다.

변경 사항 커밋하기

Change indicator 변경 사항을 커밋하고 GitHub에 푸시해 보겠습니다.

$ git add .
$ git commit -m "유닛 테스트 추가"
$ git push

이제 프론트엔드로 넘어갈 준비가 거의 다 되었습니다. 하지만 그 전에, React 앱이 백엔드에 연결할 수 있도록 백엔드 설정을 확인해야 합니다.