Тестирование является важной частью процесса разработки программного обеспечения. Хорошо написанные тесты обеспечивают уверенность в том, что ваше приложение работает так, как задумано. В этом руководстве мы обсудим стратегии тестирования приложений React.js.
Настройка среды тестирования
Приложения React.js часто тестируются с использованием комбинации тестовых библиотек. Jest — популярная среда тестирования, а Enzyme или React Testing Library обычно используются для предоставления дополнительных утилит тестирования.
Установите Jest с помощью npm:
npm install --save-dev jest
Вы также можете установить Enzyme или React Testing Library:
npm install --save-dev enzyme enzyme-adapter-react-16 npm install --save-dev @testing-library/react
Написание простого теста
Вот пример простого теста Jest для компонента React:
import React from 'react'; import { shallow } from 'enzyme'; import App from './App'; test('renders learn react link', () => { const wrapper = shallow(<App />); expect(wrapper.find('.App-link').text()).toBe('Learn React'); });
Тестирование взаимодействия компонентов
Вы можете имитировать взаимодействие пользователя с вашими компонентами. Вот пример теста на нажатие кнопки:
import React from 'react'; import { shallow } from 'enzyme'; import Button from './Button'; test('button click changes state', () => { const wrapper = shallow(<Button />); wrapper.find('button').simulate('click'); expect(wrapper.state('wasClicked')).toBe(true); });
Тестирование моментальных снимков
Моментальные тесты позволяют убедиться, что ваш пользовательский интерфейс не изменится неожиданно. Тест моментального снимка фиксирует визуализированный вывод компонента и сохраняет его в файл. Затем этот файл используется в качестве эталона для будущих тестов.
import React from 'react'; import renderer from 'react-test-renderer'; import Link from '../Link.react'; test('Link changes the class when hovered', () => { const component = renderer.create( <Link page="http://www.facebook.com">Facebook</Link>, ); let tree = component.toJSON(); expect(tree).toMatchSnapshot(); });
Заключение
Тестирование — обширная область, и это руководство охватывает только основы. Вы можете написать множество других типов тестов, таких как интеграционные тесты, сквозные тесты и тесты производительности. Но даже базовый набор модульных тестов может помочь предотвратить ошибки в вашем приложении.
В следующем посте мы обсудим, как использовать GraphQL с React. А пока удачного кодирования!