Взаимодействие с пользователем — важнейший аспект тестирования приложений React. Библиотека тестирования React предоставляет мощные инструменты и утилиты для имитации взаимодействия с пользователем и тестирования результирующего поведения ваших компонентов. В этом сообщении блога мы рассмотрим, как эффективно тестировать взаимодействия с пользователем в React с помощью библиотеки тестирования React. Мы предоставим примеры кода для демонстрации каждого шага процесса.

Шаг 1: Настройка тестовой среды Начните с установки необходимых зависимостей: react-testing-library и jest-dom.

npm install --save-dev @testing-library/react jest-dom

Шаг 2: Визуализация вашего компонента В тестовом файле импортируйте необходимые функции из @testing-library/react и визуализируйте компонент, который вы хотите протестировать.

import React from 'react';
import { render, screen } from '@testing-library/react';
import YourComponent from '../YourComponent';
test('renders the YourComponent', () => {
  render(<YourComponent />);
});

Шаг 3: Выбор элементов для взаимодействия Чтобы взаимодействовать с определенными элементами в вашем компоненте, используйте такие запросы, как getByRole, getByTestId или getByText, чтобы выбрать элементы, с которыми вы хотите взаимодействовать.

test('should change the text on button click', () => {
  render(<YourComponent />);
  
  const buttonElement = screen.getByRole('button');
  const textElement = screen.getByText('Initial Text');
  
  expect(textElement.textContent).toBe('Initial Text');
  
  // Interact with the button
  fireEvent.click(buttonElement);
  
  expect(textElement.textContent).toBe('Updated Text');
});

Шаг 4: Моделирование взаимодействия с пользователем Библиотека тестирования React предоставляет утилиту fireEvent для имитации взаимодействия с пользователем, такого как клики, изменения ввода или отправка форм. Используйте fireEvent для запуска желаемого взаимодействия с пользователем.

import { fireEvent } from '@testing-library/react';
test('should update the input value on change', () => {
  render(<YourComponent />);
  
  const inputElement = screen.getByTestId('input-element');
  
  // Simulate input change
  fireEvent.change(inputElement, { target: { value: 'New Value' } });
  
  expect(inputElement.value).toBe('New Value');
});

Шаг 5: Утверждение ожидаемого поведения После имитации взаимодействия с пользователем заявите об ожидаемом поведении вашего компонента, используя утверждения ожидания Jest.

test('should toggle a checkbox on click', () => {
  render(<YourComponent />);
  
  const checkboxElement = screen.getByRole('checkbox');
  
  // Simulate checkbox click
  fireEvent.click(checkboxElement);
  
  expect(checkboxElement.checked).toBe(true);
  
  // Simulate checkbox click again
  fireEvent.click(checkboxElement);
  
  expect(checkboxElement.checked).toBe(false);
});

Шаг 6. Запуск тестов Теперь вы можете запустить тесты и посмотреть, как ваш компонент ведет себя при моделировании взаимодействия с пользователем.

npm test

Тестирование взаимодействия с пользователем в React имеет решающее значение для обеспечения надежности и функциональности ваших компонентов. С библиотекой тестирования React и утилитой fireEvent вы можете легко имитировать взаимодействие с пользователем и подтверждать ожидаемое поведение. Следуя этому практическому руководству, вы сможете уверенно тестировать взаимодействие пользователей с вашими приложениями React, что приведет к более надежному коду. Удачного тестирования!