From c4b54c8ee04c1637d9e7489202866b57c403adc6 Mon Sep 17 00:00:00 2001 From: junye0l Date: Thu, 18 Jun 2026 04:28:18 +0900 Subject: [PATCH] =?UTF-8?q?docs(=EC=A4=80=EC=97=B4):=207=EC=A3=BC=EC=B0=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../\352\271\200\354\244\200\354\227\264.md" | 402 ++++++++++++++++++ 1 file changed, 402 insertions(+) create mode 100644 "week-07/\352\271\200\354\244\200\354\227\264.md" diff --git "a/week-07/\352\271\200\354\244\200\354\227\264.md" "b/week-07/\352\271\200\354\244\200\354\227\264.md" new file mode 100644 index 0000000..302682c --- /dev/null +++ "b/week-07/\352\271\200\354\244\200\354\227\264.md" @@ -0,0 +1,402 @@ +# 프론트엔드 개발에 유용한 도구 및 라이브러리 + +코드의 품질을 향상시키고 안정적인 애플리케이션을 개발하는데 도움이 되는 도구들을 다음과 같이 정리하였다. + +## ESLint + +- What: 코드의 품질을 검사하고, 문제가 있는 부분을 찾아내는 도구. +- Why: 일관된 코드 스타일을 유지하고, 정적 분석을 통해 오류를 미리 발견하여 코드의 품질을 향상시킬 수 있다. +- How: 프로젝트에 ESLint를 설정하고 필요한 규칙을 추가하여 코드를 검사하고 수정할 수 있다. + +## Jest + +- What: JavaScript 및 TypeScript 코드를 테스트하는 도구. +- Why: 코드의 동작을 자동으로 확인할 수 있으며, 이를 통해 개바자는 코드 변경으로 인한 오류를 미리 발견할 수 있다. +- How: Jest를 사용하여 `test` 파일을 작성하고 `npm test` 명령을 사용하여 테스트를 실행한다. + +## Zod + +- What: 데이터 유효성 검사와 스키마 정의를 위한 라이브러리로, 데이터의 유효성을 검사하고 정의하는 데 사용된다. +- Why: 데이터의 유효성을 쉽게 검사하고, 안전하게 다룰 수 있다. 이를 통해 개발자는 더욱 안정적이고 신뢰할 수 있는 애플리케이션을 개발할 수 있다. +- How: Zod를 사용하여 데이터 스키마를 정의하고, 데이터를 검증하거나 변환하는 메서드를 사용하여 데이터를 다룬다. + +# 예시 코드 + +## ESLint + +- 코드 스타일 검사: 일관된 코드 스타일을 유지하기 위해 사용된다. +- 문법 오류 확인: Javascript 및 TypeScript 코드의 문법 오류를 검사한다. +- 코드 품질 향상: 잠재적인 오류를 미리 방지하여 코드의 품질을 향상시킨다. + +```jsx +// .eslintrc.js + +module.exports = { + extends: ["eslint:recommended", "plugin:react/recommended"], + parserOptions: { + ecmaVersion: 12, + sourceType: "module", + ecmaFeatures: { + jsx: true, + }, + }, + rules: { + // 여기에 필요한 규칙을 추가한다. + "no-console": "warn", + "no-unused-vars": "warn", + }, +}; +``` + +## Jest + +### 유닛 테스트 + +각각의 함수나 컴퓨넌트가 독립적으로 분리된 환경에서 의도된 대로 정확히 작동하는지 검증하는 테스트 + +```tsx +const sum = (a: number, b: number): number => { + return a + b; +}; + +export default sum; +``` + +```tsx +import sum from "./unitTest"; + +test("adds 1 + 2 to equal 3", () => { + expect(sum(1, 2)).toBe(3); +}); +``` + +### 통합 테스트 + +유닛 테스트를 통과한 여러 컴포넌트가 묶여서 하나의 기능으로 정상적으로 작동하는지 확인하는 테스트 + +```tsx +interface ButtonProps { + onClick: () => void; + label: string; +} + +const Button = (props: ButtonProps) => { + return ; +}; + +export default Button; +``` + +```tsx +// 컴포넌트를 import 하고 사용하게 될 때부터는 jsx 파일 확장자로 작성해야한다. + +import { fireEvent, render } from "@testing-library/react"; +import Button from "./integrationTest"; + +test("renders button with correct label", () => { + const handleClick = jest.fn(); + const { getByText } = render( +