이밖에도.. 재설계 시간의 단축, 추가로 무언가를 더 구현해야 할 때 더 용이하게 할 수 있는 등의 이점들이 있다.
React Testing Library
Create React App
로 리액트 앱을 생성하면
기본적으로 테스팅을 위한React Testing Library
가 내장되어 있다
리액트 컴포넌트를 테스트하는 가벼운 솔루션!
React Testing Library
는 React
구성 요소 작업을 위한 API
를 추
가하여 DOM Testing Library
위에 구축.
DOM Testing Library
란 Dom 노드(Node)
를 테스트하기 위한 매
우 가벼운 솔루션.
Create React App
으로 생성된 프로젝트는 즉시 React Testing Library
를 지원. 그렇지 않은 경우 npm을 통해 추가 가능.
npm install --save-dev @testing-library/react
React Testing Library
는 에어비앤비에서 만든 Enzyme
을 대체하는 솔루션.
구분 | 방법 | 설명 |
---|---|---|
Enzyme | 구현 주도 테스트 (Implementation Driven Test) | UI를 테스트할 때 어떤 태그가 사용되었고 어떤 문자가 추가되었는지를 테스트 함. 그래서 만약 <p> 태그를 <h2> 태그로 바꾸면 에러 발생... |
React Testing Library | 행위 주도 테스트 (Behavior Driven Test) | 사용자의 입장에서 테스트하기 때문에 어떤 태그가 사용되었는지 보다 어떠한 이벤트를 발생시켰을 때 화면이 어떻게 변화가 되는지 등의 테스트가 주를 이룬다 |
Jest
란,https://jestjs.io/docs/getting-started
https://github.com/testing-library/jest-dom
Jest
시작하기npm install jest --save-dev
yarn add --dev jest
React Testing Library
주요 API
App.test.js
App
컴포넌트를 렌더링 시켰을 때, learn react 라는 텍스트가Document
에 있는가?
render
함수Return
은 RTL
에서 제공하는 쿼리 함수와 screen
객체를 사용하기! get
, find
, query
등 여러 유형의 쿼리가 있다.쿼리 | 설명 |
---|---|
getBy.. | 쿼리에 대해 일치하는 노드를 반환하고 일치하는 요소가 없거나 둘 이상이면 에러 반환 둘 이상의 요소가 예상되는 경우 대신 getAllBy.. 사용. |
queryBy.. | 쿼리에 대해 일치하는 노드를 반환하고 일치하는 요소가 없으면 null 을 반환. 존재하지 않는 요소를 확인할 때 유용. 일치하는 요소가 둘 이상이면 에러 반환. |
findBy.. (getBy + waitFor = findBy) | 주어진 쿼리와 일치하는 요소가 발 견되면 Promise를 반환. 요소가 발견되지 않거나 기본 제한 시간인 1000ms 후에 둘 이상의 요소가 발견되면 거부. 둘 이상의 요소를 찾아야 하는 경우 findAllBy 를 사용. |