Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад

Какие объекты рекомендуется заменять моками?

Вопрос проверяет понимание принципов использования моков в тестировании для изоляции тестируемого кода от внешних зависимостей.

Короткий ответ

Моками рекомендуется заменять объекты, которые не являются частью тестируемого модуля, но необходимы для его работы. Это внешние сервисы, базы данных, сетевые запросы, файловые системы и другие нестабильные или медленные зависимости. Моки позволяют контролировать поведение этих объектов и проверять взаимодействие с ними.

Длинный ответ

Что такое моки и зачем они нужны

Моки — это тестовые двойники, которые имитируют поведение реальных объектов. Они используются в юнит-тестировании для изоляции тестируемого кода от его зависимостей. Основная цель моков — заменить объекты, которые делают тесты медленными, нестабильными или трудновоспроизводимыми.

Какие объекты стоит заменять моками

  • Внешние сервисы и API — вызовы к сторонним сервисам (платежные системы, погодные API) могут быть недоступны или медленны.
  • Базы данных — запросы к БД замедляют тесты и требуют настройки тестовых данных.
  • Файловая система — чтение/запись файлов зависит от окружения и может привести к побочным эффектам.
  • Сетевые запросы — HTTP-запросы нестабильны и замедляют выполнение тестов.
  • Сложные объекты с побочными эффектами — например, отправка email или логирование.

Пример кода

// Функция, которая отправляет email через внешний сервис
function sendWelcomeEmail(userId, emailService) {
  const user = getUser(userId);
  return emailService.send(user.email, 'Welcome!');
}

// Тест с моком emailService
const mockEmailService = { send: jest.fn() };
sendWelcomeEmail(1, mockEmailService);
expect(mockEmailService.send).toHaveBeenCalledWith('user@example.com', 'Welcome!');

Когда не стоит использовать моки

Не заменяйте моками простые объекты без логики (DTO, value objects) или объекты, которые являются частью тестируемого модуля. Также избегайте моков для стабильных и быстрых зависимостей, таких как математические вычисления.

Вывод: Моки следует применять для изоляции тестируемого кода от внешних, нестабильных или медленных зависимостей. Это делает тесты быстрее, надежнее и проще для понимания.

Уровень

  • Рейтинг:

    4

  • Сложность:

    3

Навыки

  • Testing

Ключевые слова

#mocking

#unit testing

#test doubles

#dependency isolation

Подпишись на Java Developer в телеграм