Sobes.tech
Назад к вопросам
Junior — Middle
74

Можете объяснить, что подразумевается под модульным тестированием кода?

Ответ от нейросети

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 модульные тесты обычно пишут для функций, сервисов и методов классов.