Вступить в клуб →
средняявопросТестирование: testing, testify, httptest, testcontainers

Сервис уведомлений невозможно протестировать без реального SMTP-сервера

type Notifier struct {
    smtp *mail.SMTPClient
}

func (n *Notifier) OrderPaid(ctx context.Context, o Order) error {
    return n.smtp.Send(ctx, o.Email, "Заказ оплачен", render(o))
}

Как сделать Notifier тестируемым без почтового сервера?

  • Объявить у Notifier маленький интерфейс и передавать зависимость
  • Поднимать SMTP-сервер в каждом юнит-тесте
  • Сделать smtp глобальной переменной и подменять её
  • Тестировать только функцию render

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела