Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- corou
- HTML
- 리액트
- 크래프톤 정글
- CSS
- Java
- 큐
- 자바
- TiL
- 사이드프로젝트
- 알고리즘
- 크래프톤정글
- 핀토스
- 스택
- 4기
- 정보처리기사
- 백준
- Flutter
- 소켓
- defee
- 나만무
- pintos
- Vue.js
- 프로그래머스
- 모션비트
- JavaScript
- 코드트리
- 자바스크립트
- userprog
- 시스템콜
Archives
- Today
- Total
문미새 개발일지
Jest expect() 본문
728x90
expect()는 jest에서 사용하는 테스트 대상 값의 기대 조건을 지정할 때 사용하는 함수이며 검사 방식에 따라 사용하는 메소드가 다르다.
기본 비교
Matcher | 설명 | 예시 |
toBe(value) | 정확히 같은 값을 기대 (===) | expect(1 + 2).toBe(3) |
toEqual(value) | 객체/배열 등 구조까지 같음을 기대 | expect({ a: 1 }).toEqual({ a: 1 }) |
toStrictEqual(value) | toEqual보다 더 엄격 (undefined 등도 체크) | expect([1, undefined]).toStrictEqual([1, undefined]) |
toHaveTextContent(value) | 같은 텍스트 값을 기대 | expect("moon").toHaveTextContent("moon") |
not.@@() | 값이 다름을 기대 | expect(1).not.toBe(2) |
Boolean 검사
Matcher | 설명 | 예시 |
toBeTruthy() | true처럼 평가되는 값 기대 | expect("hello").toBeTruthy() |
toBeFalsy() | false처럼 평가되는 값 기대 | expect(0).toBeFalsy() |
toBeNull() | null인지 검사 | expect(null).toBeNull() |
toBeUndefined() | undefined인지 검사 | expect(undefined).toBeUndefined() |
toBeDefined() | 정의되어 있는지 검사 | expect('hi').toBeDefined() |
Number 검사
Matcher | 설명 | 예시 |
toBeGreaterThan(number) | 초과 | expect(10).toBeGreaterThan(5) |
toBeLessThan(number) | 미만 | expect(3).toBeLessThan(10) |
toBeGreaterThanOrEqual(number) | 이상 | expect(5).toBeGreaterThanOrEqual(5) |
toBeCloseTo(number[, precision]) | 부동소수점 근사 비교 | expect(0.1 + 0.2).toBeCloseTo(0.3, 5) |
그 외 검사
Matcher | 설명 | 예시 |
toMatch(regex or string) | 정규식이나 문자열 포함 여부 검사 | expect('Hello World').toMatch(/World/) |
toContain(item) | 배열 안에 포함되는 값 검사 | expect([1, 2, 3]).toContain(2) |
toHaveLength(number) | 길이 검사 | expect([1, 2, 3]).toHaveLength(3) |
toHaveProperty(keyPath[, value]) | 객체에 속성이 있는지 검사 | expect(obj).toHaveProperty("user.name", "철수") |
toThrow() | 에러 발생을 기대 | expect(() => throwError()).toThrow() |
toThrowError("에러메시지") | 특정 메시지 포함된 에러 발생 | expect(() => throwError()).toThrow("오류") |
예시)
// 경험치가 100을 넘었을 때
it("경험치가 100을 넘었을 때, 레벨업하고 나머지가 처리되야 한다.", () => {
const { getByTestId, getAllByTestId } = render(
<ExpBox level={21} maxExp={maxExp} currentExp={105} />
);
expect(getByTestId("exp-level")).toHaveTextContent("LV.22");
const filledBlocks = getAllByTestId("filled-block");
expect(filledBlocks.length).toBe(1);
});
toHaveTextContent를 사용하여 레벨업이 올바르게 완료되었는지, 그리고 레벨업하고 남은 경험치만큼 경험치 바가 채워지는지 테스팅하는 코드이다.
// 경험치 값이 올바르게 출력되는지
it("경험치 값이 올바르게 출력된다.", () => {
const { getByText } = render(
<ExpBox level={21} maxExp={maxExp} currentExp={30} />
);
expect(getByText("(30 / 100XP)")).toBeTruthy();
});
toBeTruthy를 사용하여 현재 가지고 있는 경험치대로 수치가 정확히 나오는지 테스팅하는 코드이다.
테스팅 학습을 위해 몇 가지 기능을 사용해보니, "꼭 이 상황엔 이 테스팅 코드를 사용해야 한다." 같은 건 없는 것 같다.
텍스트 값이 존재하는걸 boolean뿐 만 아니라 텍스트 비교로도 테스팅할 수 있고, 해당 id를 가진 태그가 존재하는지 확인하는 것도 다양한 기능으로 테스팅이 가능하여 자유롭게 손에 익은 기능으로 쓰면 될 것 같다.
728x90
'개발 TIL' 카테고리의 다른 글
react-native expo에서 jest testing (0) | 2025.04.23 |
---|---|
LinearGradient (0) | 2025.04.23 |
앱플레이어 expo 연동, 구글 로그인 구현 중 (0) | 2025.04.02 |
React-Native Expo에 Tailwind 적용하기 (0) | 2025.03.31 |
개발 회고 (0) | 2025.03.26 |