개발/React

[React] Jest와 React 테스트 환경 설정

hr0513 2025. 2. 18. 09:44
728x90
반응형

React에서 Jest로 테스트 환경을 구축하는 방법을 정리해볼게요

 

Jest & 필수 패키지 설치

기본적인 Jest 설정을 위한 패키지

yarn add --dev jest @types/jest
yarn add --dev @testing-library/react @testing-library/jest-dom
yarn add --dev @babel/preset-env @babel/preset-react
yarn add --dev identity-obj-proxy

이렇게 하면 Jest와 React 테스트 환경을 갖출 수 있어요


1. 한 번에 설치하는 방법

yarn add --dev @testing-library/react @testing-library/jest-dom jest jest-environment-jsdom @babel/preset-env @babel/preset-react babel-jest

 

반응형

2. Babel 설정

Jest가 ES6 문법을 이해할 수 있도록 Babel도 설정해줘야 해요

 

Babel 관련 패키지 설치

 

yarn add --dev babel-jest @babel/core


React 테스팅 환경을 위한 패키지

yarn add --dev jest-environment-jsdom

 

JSON 데이터를 검증하는 JavaScript 라이브러리

npm install --save-dev ajv

 

package.json 설정

  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "jest",
    "test:watch": "jest --watch",
    "test:coverage": "jest --coverage",
    "eject": "react-scripts eject"
  },

 

.babelrc 설정

 

{
  "presets": [
    "@babel/preset-env",
    ["@babel/preset-react", {"runtime": "automatic"}]
  ]
}

 

babel.config.js 설정

 

module.exports = {
  presets: [
    ['@babel/preset-env', {targets: {node: 'current'}}],
    '@babel/preset-react'
  ]
};

3. Jest 설정

Jest가 React 환경에서 잘 동작하도록 설정해줄게요

 

jest.config.js

 

module.exports = {
  testEnvironment: 'jsdom',
  transform: {
    '^.+\\.(js|jsx)$': 'babel-jest',
  },
  setupFilesAfterEnv: ['<rootDir>/src/setupTests.js']
};

 

  • testEnvironment: 'jsdom' → 브라우저 환경에서 테스트할 수 있도록 설정
  • transform → Babel을 사용해서 코드 변환

 

yarn add --dev @testing-library/jest-dom

4. 테스트 코드 작성

 

실제 컴포넌트 테스트를 해볼게요!

 

components/Button.js

import React from 'react'

const Button = ({ onClick, children }) => {
  return (
    <button onClick={onClick}>
      {children}
    </button>
  )
}

export default Button

 

components/Button.test.js

 

import React from "react";
import { render, screen, fireEvent } from "@testing-library/react";
import Button from "./Button";

// describe : 테스트 그룹 생성 시 사용
describe("Button Component", () => {
  test("renders button", () => {
    render(<Button>Click me</Button>);
    expect(screen.getByText("Click me")).toBeInTheDocument();
  });

  test("calls onClick when clicked", () => {
    const handleClick = jest.fn();
    render(<Button onClick={handleClick}>Click me</Button>);
    fireEvent.click(screen.getByText("Click me"));
    expect(handleClick).toHaveBeenCalledTimes(1);
  });
});

📌 render() → 버튼을 렌더링
📌 screen.getByText() → 특정 텍스트가 있는지 확인
📌 fireEvent.click() → 클릭 이벤트 발생


5. 테스트 실행

테스트를 실행하려면 아래 명령어를 입력하면 돼요

 

yarn test

이제 Jest가 자동으로 테스트를 실행하고 결과를 보여줄 거예요

728x90
반응형

'개발 > React' 카테고리의 다른 글

[React] Context API 사용법  (0) 2025.02.20
[React] useReducer 언제 써야 될까?  (0) 2025.02.18
[React] Redux 미들웨어 사용법  (0) 2025.02.12
[React] React Router를 활용한 페이지 라우팅  (0) 2025.02.11
[React] Redux 사용법  (0) 2025.02.10