✓ ESLint 코드 분석 방법
1) JS 코드를 문자열로 인식
2) 파서로 코드 구조화
3) 2에서 구조화한 AST(Abstract syntax tree)를 기준으로 규칙과 대조
4) 위반한 코드 report or fix
✓ 자바스크립트 & 타입스크립트 코드 분석
- expree 기반 파서
- AST explorer : https://astexplorer.net
✓ ESLint 관련 패키지
- eslint-plugin ~ : 특정 프레임워크, 도메인 관련 규칙 ex ) eslint-plugin-import, eslint-plugin-react
- eslint-config ~ : eslint-plugin 을 묶어서 세트로 제공하는 패키지
- eslint-config-airbnb : 가장 유명한, 수많은 개발자가 유지보수하고 있는 Airbnb사 패키지 ⭐️
- @titicaca/triple-config-kr : 한국 트리플사에서 개발
- eslint-config-next : 리액트 기반 Next.js 프레임워크
✓ ESLint 규칙 만들기
// .eslintrc.js 파일
module.exports = {
rules: {
'no-restricted-imports': [
'error',
{
path: [
name: 'react', // 모듈명
importNames: ['default'], // 모듈의 이름
message: "import React from 'react'는 react 17 버전부터 필요하지 않습니다. 필요한 기능만 react에서 import하여 사용하십시오.",
]
}
]
}
}
✓ ESLint 주의사항
- Prettier 설정 충돌 -> eslint-plugin-prettier 사용
- 규칙 예외 처리 : eslint-disable- 주석 사용 ex ) eslint-disable-line, eslint-disable-deps
- ESLint 버전 추돌 : 최신 ESLint / eslint-config 패키지간 버전 충돌
✓ Test
- 테스트 : 개발자가 만든 프로그램이 코딩을 한 의도대로 작동하는지 확인하는 일련의 작업
- 백엔드는 주로 화이트박스 테스트, 프론트엔드는 블랙박스 테스트
- 애플리케이션에서 가장 취약하거나 중요한 부분을 파악해 테스트
✓ Test 코드 작성법
1) 테스트 함수, 모듈 선정
2) 반환하길 기대하는 값 작성
3) 실제 반환값 작성
4) 2-3 일치 확인
5) 기댓값 반환시 테스트 성공
✓ React Testing Library
- 리액트 기반 환경에서 리액트 컴포넌트를 테스팅하는 라이브러리
- Assertion Library : 테스트 결과 확인 라이브러리 ex ) Node.js assert, should.js, expect.js, chai
- cf ) DOM Testing Library : jsdom 기반
ㄴ jsdom : 순수 자바스크립트로 작성된 라이브러리, HTML이 없는 JS 환경(node.js) 에서 HTML +DOM 을 사용할 수 있게 도와줌
✓ Test Framework
- JS : Jest, Mocha, Karma, Jasmine
- React : Jest (import 없이 global하게 사용 가능)
✓ 리액트 컴포넌트 테스트
1) 컴포넌트 렌더링
2) 특정 액션 수행
3) 1-2 비교
✓ 컴포넌트 타입
- 정적 컴포넌트 : 별토의 상태가 존재하지 않고 항상 같은 결과를 반환하는 컴포넌트
- 동적 컴포넌트 : 상태(state)가 있는 컴포넌트 ex ) useState 사용
✓ 테스트 라이브러리
- fetch 등 비동기 이벤트가 발생하는 컴포넌트 : MSW(Mock Service Worker) 사용
- 사용자 정의 훅 테스트 : react-hooks-testing-library
✓ 그 외 프론트엔드 테스트
- 단위 테스트(Unit Test) : 각각의 코드나 컴포넌트가 독립적으로 분리된 환경에서 의도된 대로 정확히 작동하는지 검증하는 테스트 ex ) React Testing Library
- 통합 테스트(Integration Test) : 유닛 테스트를 통과한 여러 컴포넌트가 묶어서 하나의 기능으로, 정상적으로 작동하는지 확인하는 테스트
- E2E Test(End to End Test) : 실제 사용자처럼 작동하는 로봇을 활용하여 애플리케이션 전체 기능을 확인하는 테스트