Вопрос проверяет понимание различий в философии тестирования React-компонентов между React Testing Library и Enzyme.
React Testing Library (RTL) и Enzyme представляют два разных подхода к тестированию React-компонентов. RTL следует принципу: "Чем больше ваши тесты похожи на то, как ваше приложение используется, тем больше уверенности они могут вам дать". Enzyme же предоставляет более низкоуровневый доступ к внутренностям компонента.
// React Testing Library
import { render, screen, fireEvent } from '@testing-library/react';
import Counter from './Counter';
test('increments counter', () => {
render(<Counter />);
const button = screen.getByRole('button', { name: /increment/i });
fireEvent.click(button);
expect(screen.getByText('1')).toBeInTheDocument();
});
// Enzyme
import { shallow } from 'enzyme';
import Counter from './Counter';
test('increments counter', () => {
const wrapper = shallow(<Counter />);
wrapper.find('button').simulate('click');
expect(wrapper.state('count')).toBe(1);
});В примере RTL проверяет, что пользователь видит '1' после клика. Enzyme проверяет внутреннее состояние count.
React Testing Library предпочтительнее для создания надежных тестов, которые не ломаются при рефакторинге. Enzyme может быть полезен для быстрого прототипирования тестов, но его использование часто приводит к хрупким тестам, привязанным к реализации.
Уровень
Рейтинг:
4
Сложность:
5
Навыки
React
Testing
Ключевые слова
Подпишись на React Developer в телеграм
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию