Что такое act()

Ответ

act() — это утилита из React Testing Library, которая оборачивает код, вызывающий обновления состояния или эффекты в React-компонентах. Она гарантирует, что все обновления DOM и эффекты выполняются синхронно перед проверками.

Пример с тестом:

import { render, screen, act } from '@testing-library/react';
import Counter from './Counter';

test('increments counter', () => {
  render(<Counter />);

  act(() => {
    fireEvent.click(screen.getByText('+1'));
  });

  expect(screen.getByText('1')).toBeInTheDocument();
});

Ключевые моменты:

  • act() нужен для тестов, где происходят изменения состояния
  • В React Testing Library многие методы (click, type и т.д.) уже обёрнуты в act()
  • Вручную act() требуется редко — обычно при работе с таймерами или сложными асинхронными операциями