Я начинаю с модульного тестирования и пытаюсь сделать TDD. Я прочитал немало об этом предмете и написал несколько тестов. Я просто хочу знать, является ли следующий подход правильным.
Я хочу добавить обычную функцию «связаться с нами» на моем веб-сайте. Вы знаете, что пользователь заполняет форму со своим адресом электронной почты, вводит краткое сообщение и нажимает кнопку, чтобы отправить форму обратно.
Связующие модели делают свое дело, и мой метод действия принимает опубликованные данные в качестве модели. Затем метод действия проанализирует модель и с помощью smtp отправит электронное письмо администратору веб-сайта, сообщая ему, что кто-то заполнил контактную форму на их сайте.
Теперь к вопросу .... Чтобы проверить это, я был бы прав при создании интерфейса IMessageService , который имеет метод Отправить (emailAddress, message) для принятия адрес электронной почты и тело сообщения. Реализуйте интерфейс в конкретном классе и позвольте этому классу иметь дело с SMTP-файлами и фактически отправлять почту.
Если я добавлю интерфейс в качестве параметра в конструктор моего контроллера, я смогу затем использовать DI и IoC для внедрения конкретного класса в контроллер. Но при модульном тестировании я могу создать фальшивую или фиктивную версию моего IMessageService и сделать утверждения на этот счет.
Причина, по которой я спрашиваю, состоит в том, что я видел другие примеры людей, генерирующих интерфейсы для SmtpClient и затем высмеивающих это. Неужели нужно идти так далеко, или я не разбираюсь в этом?