Ответ
Компонентное (Unit) тестирование — это проверка отдельных изолированных модулей кода (функций, классов, компонентов UI) на корректность их внутренней логики.
Основные задачи:
-
Проверка логики: Тестирование условных операторов, циклов, алгоритмов, преобразования данных.
// Пример: тестирование функции-валидатора test('validateEmail returns true for correct email', () => { expect(validateEmail('test@example.com')).toBe(true); }); test('validateEmail returns false for email without @', () => { expect(validateEmail('test.example.com')).toBe(false); }); -
Проверка граничных условий и ошибочных сценариев: Работа с
null, пустыми строками, крайними значениями.def test_divide_by_zero_raises_exception(self): calculator = Calculator() with self.assertRaises(ZeroDivisionError): calculator.divide(10, 0) -
Для UI-компонентов (React, Vue, Angular):
- Рендеринг: Корректно ли отображается компонент с заданными пропсами/состоянием.
- Взаимодействие: Корректно ли обрабатываются пользовательские события (клик, ввод).
- Состояние: Корректно ли изменяется внутреннее состояние компонента.
// React Testing Library пример test('Counter increments on button click', () => { const { getByText } = render(<Counter initialCount={0} />); const button = getByText('Increment'); fireEvent.click(button); expect(getByText('Count: 1')).toBeInTheDocument(); });
Инструменты и подход: Используются фреймворки (Jest, Mocha, Pytest) и библиотеки для мокирования (jest.fn, Sinon.JS, unittest.mock) для изоляции тестируемого модуля от внешних зависимостей (база данных, сетевые запросы).