cleanup — это метод, предоставляемый React Testing Library, который используется для очистки после каждого теста. Он отключает все компоненты, которые были отрендерены с помощью render, и очищает все слушатели событий и таймеры, чтобы избежать утечек памяти и конфликтов между тестами.
Основные функции cleanup:
- Очистка после каждого теста: Автоматически вызывается после каждого теста, если вы используете
@testing-library/react. - Предотвращение утечек памяти: Удаляет все компоненты и очищает все слушатели событий и таймеры, чтобы избежать утечек памяти.
- Избежание конфликтов между тестами: Гарантирует, что каждый тест начинается с чистого состояния, чтобы избежать конфликтов между тестами.
Пример использования cleanup:
import React from 'react';
function MyComponent() {
return <div>Hello, World!</div>;
}
export default MyComponent;Пример теста:
import React from 'react';
import { render, screen, cleanup } from '@testing-library/react';
import MyComponent from './MyComponent';
afterEach(cleanup);
test('renders MyComponent', () => {
render(<MyComponent />);
const element = screen.getByText(/Hello, World!/i);
expect(element).toBeInTheDocument();
});Пояснение:
- Импорт
cleanup: Импортируйтеcleanupиз@testing-library/react. - Использование
afterEach: ИспользуйтеafterEachдля вызоваcleanupпосле каждого теста. - Рендеринг компонента: Используйте
renderдля рендеринга компонентаMyComponent. - Поиск элемента: Используйте
screen.getByTextдля поиска элемента по тексту. - Проверка наличия элемента: Используйте
expectи методы Jest для проверки, что элемент присутствует в документе.
Автоматическая очистка:
Если вы используете @testing-library/react, cleanup автоматически вызывается после каждого теста, поэтому вам не нужно явно вызывать его в большинстве случаев. Однако, если вы хотите убедиться, что очистка происходит, вы можете использовать afterEach(cleanup).
import React from 'react';
import { render, screen } from '@testing-library/react';
import MyComponent from './MyComponent';
test('renders MyComponent', () => {
render(<MyComponent />);
const element = screen.getByText(/Hello, World!/i);
expect(element).toBeInTheDocument();
});