1. 진리값 검증
toBeTruthy = 참인 값과 일치하는 매처
toBeFalsy = 거짓인 값과 일치하는 매처
=> 각 매처 앞에 not 추가하면 진리값을 반전시킬 수 있다.
TIP) null, undefined도 toBeFalsy와 일치하지만, 각각 검증하고 싶으면 toBeNull, toBeUndefined 사용한다.
describe("진릿값 검증", () => {
test("참인 진릿값 검증", () => {
expect(1).toBeTruthy();
expect("1").toBeTruthy();
expect(true).toBeTruthy();
expect(0).not.toBeTruthy();
expect("").not.toBeTruthy();
expect(false).not.toBeTruthy();
});
test("거짓인 진릿값 검증", () => {
expect(0).toBeFalsy();
expect("").toBeFalsy();
expect(false).toBeFalsy();
expect(1).not.toBeFalsy();
expect("1").not.toBeFalsy();
expect(true).not.toBeFalsy();
});
test("null과 undefined 검증", () => {
expect(null).toBeFalsy();
expect(undefined).toBeFalsy();
expect(null).toBeNull();
expect(undefined).toBeUndefined();
expect(undefined).not.toBeDefined();
});
});
2. 수치 검증
toBe, toEqual, toBeGreaterThan, toBeGreaterThanOrEqual, toBeLessThan, toBeLessThanOrEqual ...
자바스크립트는 소수 계산에 오차가 있어서 toBeCloseTo 매처를 사용한다.
3. 문자열 검증
등가 비교 또는 문자열 일부가 일치하는지 검증 = toContain
정규표현식을 검증 = toMatch
문장열 길이 = toHaveLength
객체에 포함된 문자열 검증 = stringContaining, stringMatching
test("stringContaining", () => {
expect(obj).toEqual({
status: 200,
message: expect.stringContaining("World"),
});
});
test("stringMatching", () => {
expect(obj).toEqual({
status: 200,
message: expect.stringMatching(/World/),
});
});
4. 배열 검증
배열에 원시형(primitive type)인 특정값이 포함됐는지 확인하고 싶다면 toContain
배열 길이 검증 = toHaveLength
배열에 특정 객체 포함됐는지 = toContainEqual
인수로 넘겨준 배열의 요소들이 전부 포함돼있어야 성공 = arrayContaining
const article1 = { author: "taro", title: "Testing Next.js" };
const article2 = { author: "jiro", title: "Storybook play function" };
const article3 = { author: "hanako", title: "Visual Regression Testing" };
const articles = [article1, article2, article3];
test("toContainEqual", () => {
expect(articles).toContainEqual(article1);
});
test("arrayContaining", () => {
expect(articles).toEqual(expect.arrayContaining([article1, article3]));
});
5. 객체 검증
toMatchObject
부분적으로 프로퍼티가 일치하면 테스트를 성공시키고, 일치하지 않는 프로퍼티가 있으면 테스트 실패.
toHaveProperty
객체에 특정 프로퍼티가 있는지 검증
objectContaining
객체 내 또다른 객체 검증
const author = { name: "taroyamada", age: 38 };
const article = {
title: "Testing with Jest",
author,
};
test("toMatchObject", () => {
expect(author).toMatchObject({ name: "taroyamada", age: 38 });
expect(author).toMatchObject({ name: "taroyamada" });
expect(author).not.toMatchObject({ gender: "man" });
});
test("objectContaining", () => {
expect(article).toEqual({
title: "Testing with Jest",
author: expect.objectContaining({ name: "taroyamada" }),
});
expect(article).toEqual({
title: "Testing with Jest",
author: expect.not.objectContaining({ gender: "man" }),
});
});
'🖥FrontEnd' 카테고리의 다른 글
Jest 기본 공부하기, 쉽게 Jest로 테스트하는 익스텐션 추천 (0) | 2024.09.09 |
---|---|
IntersectionObserver 로 스크롤 이벤트 (0) | 2024.08.28 |
웹 성능 최적화를 위한 도구 추천 (0) | 2024.07.27 |
jest, beforeAll, afterAll (0) | 2023.05.01 |
jest 기본 공부 (0) | 2023.04.28 |