[모던 리액트 Deep Dive] 8장 좋은 리액트 코드 작성을 위한 환경 구축하기

2025. 6. 25. 23:12·라이브러리/React

8.1 ESLint를 활용한 정적 코드 분석

ESLint는 파싱된 JS의 AST(Abstract Syntax TreE)를 기준으로 각종 규칙과 대조해 이를 위반한 코드를 알리거나 수정하는 정적 코드 분석 도구입니다.

JS 파서로 espree를 사용합니다. 파싱된 트리는 변수인지, 함수인지, 함수명은 무엇인지, 코드의 위치 등 자세한 정보를 담습니다.

function hello(str) {}

위 코드를 espree로 파싱한 결과입니다.

{
  "type": "Program",
  "start": 0,
  "end": 22,
  "range": [0, 22],
  "body": [
    {
      "type": "FunctionDeclaration",
      "start": 0,
      "end": 22,
      "range": [0, 22],
      "id": {
        "type": "Identifier",
        "start": 9,
        "end": 14,
        "range": [9, 14],
        "name": "hello"
      },
      "expression": false,
      "generator": false,
      "async": false,
      "params": [
        {
          "type": "Identifier",
          "start": 15,
          "end": 18,
          "range": [15, 18],
          "name": "str"
        }
      ],
      "body": {
        "type": "BlockStatement",
        "start": 20,
        "end": 22,
        "range": [20, 22],
        "body": []
      }
    }
  ],
  "sourceType": "module"
}
  • esplint-plugin: ESLint의 규칙을 모아놓은 패키지입니다.
  • eslint-config: eslint-plugin을 묶어서 제공하는 패키지입니다. eslint-config-airbnb나 eslint-config-google 등의 유명 회사들의 설정이 인기 있으며, 당장 적용해서 시작하기 좋은 설정들입니다. Next.js를 위한 eslint-config-next는 JS 뿐만 아니라 Next.js 환경에서의 HTML 코드를 정적 분석 대상으로 제공하는 등 유용한 기능을 가지고 있습니다.

8.2 리액트 팀이 권장하는 리액트 테스트 라이브러리

프론트엔드의 테스팅은 사용자와 동일하거나 유사한 환경에서 수행됩니다. 블랙박스 형태로 테스트가 이뤄지며, 코드가 어떻게 작성되었는지는 그다지 관심이 없고 의도대로 작동하는 데 좀 더 초점이 맞춰지게 됩니다.

React Testing Library란?

리액트 애플리케이션을 테스팅하기 위해 React Testing Library가 널리 사용됩니다. DOM Testing Library를 기반으로 만들어졌습니다.

DOM Testing Library는 jsdom을 기반으로 하고 있습니다. jsdom은 Node.js 같은 JS만 존재하는 환경에서 HTML과 DOM을 사용할 수 있도록 해주는 라이브러리입니다. jsdom을 활용해 JS 환경에서도 HTML을 사용할 수 있으므로 DOM Testing Library에서 제공하는 API를 통해 테스트를 수행할 수 있게 됩니다.

리액트 테스팅 라이브러리는 DOM Testing Library를 통해 브라우저를 실행하지 않고도 리액트 컴포넌트가 의도대로 렌더링되고 있는지 확인할 수 있습니다.

테스팅 프레임워크는 어설션을 기반으로 테스트를 수행하며, 테스트 코드 작성자에게 도움이 될 만한 정보를 알려주는 역할을 수행합니다.

어설션 라이브러리: 테스트 결과를 확인할 수 있도록 assert 등의 메서드를 제공하는 라이브러리로, should.js, expect.js, chai 등의 다양한 라이브러리가 있습니다.

Jest, Mocha, Karma, Jasmine 등의 프레임워크가 있습니다. 이들 중 현재 메타에서 작성한 오픈소스 라이브러리인 Jest가 널리 쓰이고 있습니다.

리액트 컴포넌트 테스트 코드 작성

  1. 컴포넌트를 렌더링한다.
  2. 필요하다면 컴포넌트에서 특정 액션을 수행한다.
  3. 1, 2번을 통해 기대하는 결과와 실제 결과를 비교한다.
저작자표시 비영리 동일조건 (새창열림)

'라이브러리 > React' 카테고리의 다른 글

[모던 리액트 Deep Dive] 11장 Next.js 13과 리액트 18  (0) 2025.07.03
[모던 리액트 Deep Dive] 10장 리액트 17과 18의 변경 사항 살펴보기  (1) 2025.06.25
[모던 리액트 Deep Dive] 7장 크롬 개발자 도구를 활용한 애플리케이션 분석  (0) 2025.06.25
[모던 리액트 Deep Dive] 6장 리액트 개발 도구로 디버깅하기  (0) 2025.06.25
[모던 리액트 Deep Dive] 5장 리액트와 상태 관리 라이브러리  (0) 2025.06.25
'라이브러리/React' 카테고리의 다른 글
  • [모던 리액트 Deep Dive] 11장 Next.js 13과 리액트 18
  • [모던 리액트 Deep Dive] 10장 리액트 17과 18의 변경 사항 살펴보기
  • [모던 리액트 Deep Dive] 7장 크롬 개발자 도구를 활용한 애플리케이션 분석
  • [모던 리액트 Deep Dive] 6장 리액트 개발 도구로 디버깅하기
friend5hip
friend5hip
개발 관련 지식이나 기록을 남기고 있습니다.
  • friend5hip
    friend5hip
    friend5hip
  • 전체
    오늘
    어제
    • 분류 전체보기 (60)
      • 컴퓨터공학 (2)
        • 자료구조 (0)
        • 알고리즘 (1)
        • 데이터베이스 (1)
      • Problem Solving (42)
        • BOJ (25)
        • 프로그래머스 (15)
      • 언어 (2)
        • JavaScript (2)
      • 라이브러리 (12)
        • React (12)
      • 개발 (2)
      • 기타 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    vite
    intersection observer
    누적 합
    JavaScript
    java
    완전 탐색
    수학
    react
    소수 판별
    dp
    시뮬레이션
    백준
    문자열
    매개 변수 탐색
    맵
    N과 M
    BFS
    구간 합
    삼성 sw 역량테스트
    정렬
    프로그래머스
    dfs
    집합
    이분 탐색
    코드트리
    순열
    투 포인터
    백트래킹
    구현
    그리디
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
friend5hip
[모던 리액트 Deep Dive] 8장 좋은 리액트 코드 작성을 위한 환경 구축하기
상단으로

티스토리툴바