본문으로 바로가기

[Jest] Matchers & SuperMarket 테스트 코드 작성 준비

이전 게시글 Test Code 작성 및 Jest 설정 추가에서는 간단하게 Test Code를 작성해보았고, 추가로 필요한 Jest 설정까지 해주었습니다. 이번 게시글에서는 테스트 시 많이 사용되는 matchers에 대해 알아보도록 하겠습니다. 그리고 제가 만들어둔 예시를 이용해 직접 Test Code를 작성해봅시다.

Matchers 알아보기

matchers는 많이 있습니다. 제가 하나하나 작성하여 보면 좋지만 이 부분은 공식 문서에 문서화 작업이 매우 잘 되어있으니 공식 문서를 확인하셔서 공부하시는 것을 추천드립니다. 공식 문서로 이동하기 우선 리스트로 간단하게 작성해보겠습니다.

- toBe : 숫자, 문자열과 같은 값 비교

- toEqual : Array, Object와 같은 값 비교

- toStrictEqual : Array, Object와 같은 값 비교 (엄격 모드)

- toBeNull : null 체크

- toBeDefined : defined 체크

- toBeTruthy : truthy 값 체크

- toBeFalsy : falsy 값 체크

- toBeCloseTo : 소수점 체크 (부동소수점 때문에 가까운 지 체크)

- toMatch : 문자열 자료형에 정규식으로 체크

- toContain : 배열과 같은 것에 포함되어 있는 지 체크

- toThrow : 에러 체크

아주 간단하게 설명하였습니다. 자세한 내용은 위 링크 걸어둔 공식 문서에서 확인하시면 좋을 것 같습니다. 추가로 matchers 말고 아래 테스트 코드를 작성하기 위해 알면 좋은 것이 있습니다. 테스트 전 / 후 작업을 할 수 있는 작업이 있는데 이 방법을 알면 테스트 코드를 작성하는데 도움이 됩니다.

- beforeEach : 각각의 테스트가 시작하기 전 호출

- afterEach : 각각의 테스트가 끝난 후 호출

- beforeAll : 모든 테스트가 시작하기 전 호출

- afterAll : 모든 테스트가 끝난 후 호출

위 4가지를 적절히 사용하시면 좋습니다. 자세한 것은 공식 홈페이지 확인해보세요. 공식 홈페이지 이동하기

SuperMarket 테스트 코드 작성 준비

class SuperMarket {
  constructor() {
    this.balance = 5000;

    this.snack = 2000;
    this.chocolate = 1000;
    this.icecream = 3000;
    this.gum = 500;
  }

  // 잔돈 및 item 금액 확인
  getItemPrice(item) {
    return this[item];
  }

  // 구매할 수 있는 경우 return 잔돈
  // 구매할 돈이 부족하여 구매할 수 없는 경우 return -1
  buy(item, count, paidAmount) {
    const totalPrice = this.getItemPrice(item) * count;

    if (paidAmount >= totalPrice) {
      this.balance += paidAmount - totalPrice;
      return paidAmount - totalPrice;
    }
    throw new Error("금액이 부족합니다.");
  }
}

module.exports = SuperMarket;

위 코드는 제가 작성한 SuperMarket Class 입니다. 이 SuperMarket의 특징과 기능은 아래와 같습니다.

◆ 초기 금액 및 가격 List

- 잔고 : 5000원

- 과자 가격 : 2000원

- 초콜렛 가격 : 1000원

- 아이스크림 가격 : 3000원

- 껌 가격 : 500원

◆ 기능

잔고 확인

각각의 제품 구매 (구매가 가능하면 거스름돈 돌려 받음 / 불가능하면 -1)

◆ 테스트 코드 작성해야할 것

SuperMarket Class정상적으로 구현되었는 지 검사를 해야합니다. 그렇다면

초기 금액이 5000원이 맞는 지?

지불한 금액으로 원하는 물건을 구매할 수 있는 지?

등을 검사해야합니다. 스스로 테스트 코드를 작성해보고 다음 게시글에서 제가 작성한 테스트 코드와 비교해보시면 좋을 것 같습니다.

참고자료

마지막

해당 내용은 틀릴 수도 있습니다. 틀린 내용이 있으면 조언 부탁드립니다.

반응형