Для базового тестирования React-компонента с использованием Jest и React Testing Library (RTL) вам нужно:
Пример компонента:
import React, { useState } from "react";
function Counter() {
const [count, setCount] = useState(0);
return (
<div>
<p data-testid="count">{count}</p>
<button onClick={() => setCount(count + 1)}>Increment</button>
</div>
);
}
export default Counter;Пример теста:
import React from "react";
import { render, screen, fireEvent } from "@testing-library/react";
import Counter from "./Counter";
it("renders initial count and increments on button click", () => {
// Рендерим компонент
render(<Counter />);
// Находим элементы
const countElement = screen.getByTestId("count");
const incrementButton = screen.getByText("Increment");
// Проверяем начальное состояние
expect(countElement).toHaveTextContent("0");
// Имитируем клик по кнопке
fireEvent.click(incrementButton);
// Проверяем, что счетчик увеличился
expect(countElement).toHaveTextContent("1");
// Имитируем еще один клик
fireEvent.click(incrementButton);
// Проверяем, что счетчик увеличился еще раз
expect(countElement).toHaveTextContent("2");
});Пояснение:
- Импорт необходимых модулей: Импортируйте
render,screen,fireEventи компонентCounter. - Рендеринг компонента: Используйте
renderдля рендеринга компонентаCounter - Поиск элементов: Используйте
screen.getByTestIdиscreen.getByTextдля поиска элементов в DOM. - Проверка начального состояния: Используйте
expectи методы Jest для проверки начального состояния компонента. - Имитация взаимодействия: Используйте
fireEvent.clickдля имитации клика по кнопке. - Проверка результатов: Используйте
expectдля проверки, что компонент реагирует на взаимодействие правильно.