최초 작성일 : 2024.09.05
최종 수정일 : 2024.09.05
1. 개요
프론트엔드에서도 테스트 코드가 필요할까? 옛날의 나는 굳이 필요 없다고 생각했었다. 하지만 서비스를 운영해보고 특히 오랜 기간동안 기능추가, 개선 등을 진행해오면서 리팩토링을 자주 하게 되었고 테스트 코드의 필요성을 간절히 느끼게 되었다.
이번 글에서는 테스트 코드 작성을 공부하며 Jest의 expect에 사용할 수 있는 데이터 타입별 Matcher들을 정리해보았다.
이 글에선 모든 matcher를 다루지 않으며, 더 자세한 내용은 공식 문서에서 확인할 수 있다.
2. 기본적인 사용 방법
Jest를 이용한 유닛 테스트는 기본적으로 아래처럼 작성할 수 있다.
test(테스트명, () => {
expect(검증할 함수).toBe(기대값);
});
관련있는 여러개의 테스트는 describe()로 묶을 수 있다.
describe(그룹명, () => {
test(테스트명, () => {
expect(검증할 함수).toBe(기대값);
});
...
})
3. Matcher 알아보기
이번 글에서는 expect()에 자주 사용하는 데이터 타입별 matcher에 대해 알아보았다.
1) Boolean 검증
.toBeTruthy()
.toBeFalsy()
값이 true, false에 매칭되는지 확인한다. 앞에 .not을 추가하면 값을 반전시킬 수 있다.
2) Number 검증
.toEqual()
.toBeGreaterThan()
.toBeGreaterThanOrEqual()
.toBeLessThan()
.toBeLessThanOrEqual()
.toBeCloseTo()
계산된 수치값이 기대값과 일치하거나, 크거나, 작은지 테스트 할 때 사용한다.
Javascript는 소숫점 계산시 오차가 있다. 만약 소수 계산을 테스트 해야 한다면 .toBeCloseTo()를 이용해야 하며 .toBe()를 이용하면 테스트가 실패할 수 있다.
3) String 검증
.toContain()
.toMatch()
.toHaveLength()
문자열이 특정 문자열을 포함하는지, 특정 문자열과 일치하는지, 특정 길이인지 테스트할 때 사용한다.
4) Array 검증
.toContain()
.toHaveLength()
.toContainEqual()
.arrayContaining()
배열이 특정 값을 포함하는지, 특정 길이인지, 특정 값을 포함하는지를 테스트 할 때 사용한다.
5) Object 검증
.toMatchObject()
.toHaveProperty()
Object에 특정 object가 있는지, 특정 key가 있는지 테스트할 때 사용한다.
'프론트엔드' 카테고리의 다른 글
[후기] TDD를 체험해보자 - Newstream (2) | 2024.09.23 |
---|---|
useCallback, useMemo, React.memo에 대해 알아보자! (0) | 2024.09.10 |
[React Native] 인앱결제를 도입해보자(react-native-iap) (2) | 2024.08.29 |
[React Native] 지옥의 인앱 결제 도입기(react-native-iap) (0) | 2024.08.29 |
[React] React 19 Beta 살펴보기 (0) | 2024.04.29 |