[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원이 맞는 지?
지불한 금액으로 원하는 물건을 구매할 수 있는 지?
등을 검사해야합니다. 스스로 테스트 코드를 작성해보고 다음 게시글에서 제가 작성한 테스트 코드와 비교해보시면 좋을 것 같습니다.
참고자료
마지막
해당 내용은 틀릴 수도 있습니다. 틀린 내용이 있으면 조언 부탁드립니다.
'기타 (+ Legacy) > Legacy' 카테고리의 다른 글
[테스트 코드 - Jest] 비동기 테스트 코드 작성 (0) | 2022.03.08 |
---|---|
[테스트 코드 - Jest] SuperMarket 테스트 코드 작성 및 에러 처리 (0) | 2022.03.07 |
[테스트 코드 - Jest] Test Code 작성 및 Jest 설정 추가 (0) | 2022.03.03 |
[테스트 코드 - Jest] Jest 설치 및 셋팅 (0) | 2022.03.02 |
[React] input onChange 함수 확장성 있게 사용하기 (0) | 2022.01.15 |