React 컴포넌트에 대한 테스트를 사용자 중심으로 작성하는 데 도움을 주는 인기 있는 테스팅 라이브러리이다. 이 라이브러리는 컴포넌트의 동작을 사용자의 관점에서 테스트하는 데 초점을 맞추며, 구현 세부 사항을 테스트하는 것보다 사용자의 행동에 대한 테스트를 강조한다.
Create React App으로 생성된 프로젝트는 즉시 React Testing Library를 지원한다. 그렇지 않은 경우는 다음과 같이 npm을 통해 추가 할 수 있다.
npm install --save-dev @testing-library/react
어서션(Assertion)이란?
테스트 코드에서 특정 조건이 참인지 확인하는 기능
예시
/* Mycomponent */
import React from 'react';
function MyComponent({ onClick }) {
return (
<div>
<button onClick={onClick}>Click me</button>
</div>
);
}
export default MyComponent;
/*test*/
import { render, screen } from '@testing-library/react';
import MyComponent from './MyComponent';
test('버튼이 올바른 텍스트로 렌더링되는지 확인', () => {
render(<MyComponent />);
// screen을 사용하여 렌더링된 컴포넌트의 요소를 쿼리합니다.
const buttonElement = screen.getByRole('button', { name: 'Click me' });
// 컴포넌트 동작에 대한 어서션을 작성합니다.
expect(buttonElement).toBeInTheDocument();
expect(buttonElement).toHaveTextContent('Click me');
});
test('버튼을 클릭하면 콜백이 호출되는지 확인', () => {
const handleClick = jest.fn();
render(<MyComponent onClick={handleClick} />);
const buttonElement = screen.getByRole('button', { name: 'Click me' });
// fireEvent를 사용하여 사용자 상호 작용을 시뮬레이션합니다.
fireEvent.click(buttonElement);
// 콜백이 호출되었는지 확인합니다.