Можете объяснить, что подразумевается под модульным тестированием кода?
Ответ от нейросети
sobes.tech AI
Что хотят услышать интервьюеры:
Модульное тестирование проверяет отдельные части кода изолированно от внешних зависимостей. Обычно речь идет о функциях, методах, классах или небольших модулях с предсказуемым поведением. Цель — быстро находить ошибки и безопасно менять код без регрессий.
Определение:
Модульное тестирование — это проверка минимальных, логически завершенных частей программы отдельно от остальной системы. Для таких тестов стараются убрать влияние базы данных, сети, файловой системы и других внешних факторов, используя заглушки, моки или стабы. В Node.js чаще всего тестируют отдельные функции, сервисы и методы классов.
Пример использования:
Например, есть функция, которая считает итоговую цену с учетом скидки. Для нее можно написать тест, который проверяет разные входные значения и ожидаемый результат.
// price.js
function getFinalPrice(price, discount) {
return price - price * discount;
}
module.exports = { getFinalPrice };
// price.test.js
const { getFinalPrice } = require('./price');
test('should apply 10% discount', () => {
expect(getFinalPrice(100, 0.1)).toBe(90);
});
test('should return original price when discount is 0', () => {
expect(getFinalPrice(100, 0)).toBe(100);
});
Пояснение кода:
Код показывает изолированную проверку одной функции. В первом файле описана бизнес-логика: на вход подаются цена и скидка, на выходе — итоговая цена. Во втором файле тесты вызывают функцию с фиксированными данными и сравнивают результат с ожидаемым значением. Здесь нет обращения к базе, HTTP или файловой системе, поэтому тест быстрый и стабильный.
Ключевые моменты:
- Модульный тест проверяет маленький кусок логики отдельно от внешних систем.
- Тесты должны быть быстрыми, детерминированными и легко повторяемыми.
- Для изоляции часто используют моки, стабы и заглушки.
- Такие тесты помогают ловить регрессии при изменениях кода.
- В Node.js модульные тесты обычно пишут для функций, сервисов и методов классов.