Сервис уведомлений невозможно протестировать без реального SMTP-сервера
public class NotificationService
{
public async Task OrderPaidAsync(Order order)
{
var smtp = new SmtpSender("smtp.shop.ru", 587);
await smtp.SendAsync(order.Email, "Заказ оплачен", Render(order));
}
}
Как сделать сервис тестируемым и настраиваемым?
- Принимать абстракцию отправителя через конструктор
- Сделать SmtpSender статическим классом
- Передавать адрес сервера параметром метода
- Тестировать только метод Render
