공식 문서
https://testing-library.com/docs/react-testing-library/intro/
create react app
으로 생성된 프로젝트는 즉시 React Testing Library를 제공함npm install --save-dev @testing-library/react
사용해서 설치해야함// Jest 시작하기
// 1. Jest 라이브러리 설치
npm install jest --save-dev
// 2. Test 스크립트 변경
"test" : "jest" or "jest --watchAll
// 3. 테스트 작성할 폴더 및 파일 기본 구조 생성
/test
/integration (통합 테스트)
대상이름.test.init.js
/unit (단위테스트)
대상 이름.test.js
create react app
으로 생성된 프로젝트는 이미 설치 되어있음describe // 과일
test(= it) // 바나나
expext <-> matcher
test(= it) // 사과
expext <-> matcher
test(= it) // 포도
expext <-> matcher
describe(name, fn)
: 여러 관련 테스트를 그룹화하는 블록it(name, fn, timeout)
= test
: 개별 테스트를 수행하는 곳expect()
: 값을 테스트할 때마다 사용됨. matcher와 반드시 함께 사용됨matcher
: 다른 방법으로 값을 테스트test('two plus two is not five', () => {
expect(2+2).not.toBe(5);
})
// not.toBe(5)가 matcher
npx create-react-app react-testing-app
import { render, screen } from '@testing-library/react';
import App from './App';
test('renders learn react link', () => {
render(<App />);
const linkElement = screen.getByText(/learn react/i);
expect(linkElement).toBeInTheDocument();
});
render()
: DOM에 컴포넌트를 랜더링하는 함수. 파라매터로 랜더링할 React Component가 들어감 (screen 객체 사용)get
, fine
, query
유형의 쿼리가 있음getBy + waitFor = findBy
테스팅할 때 matcher를 알맞게 쓰는지 확신이 들지 않을 때가 있으며, 코드의 형식이나 자바스크립트 문법 등을 올바르게 쓰지 못할 때가 있다. 따라서 이 부분을 도와주는 모듈에는 ESLint와 Prettier를 설치한다.
VSCODE 익스텐션으로 설치 가능 (npm으로도 가능)
eslint 설정 파일 생성 .eslintrc.json
package.json에 eslintConfig 부분 지우고 .eslintrc.json 파일 생성
ESLint Testing Plugins 설치
npm install eslint-plugin-testing-library eslint-plugin-jest-dom --save-dev
내부 설정
{
"plugins": [
"testing-library",
"jest-dom"
],
"extends": [
// 플러그인을 추가 한 후에 규칙을 정해줘야 사용가능
"react-app",
"react-app/jest",
// vue, angular, react 중에 react 를 위한 규칙
"plugin:testing-library/react",
// recommended는 추천이 되는 걸 사용
"plugin:jest-dom/recommended"
]
}
잘 작동!