Это зависит от уровня тестирования, который вы хотите. Если вы больше заинтересованы в тестировании метода, а электронная почта - это небольшая часть, вы можете подумать об издевательстве по электронной почте. Ссылка Gerrie хорошая.
Однако, если вы действительно хотите проверить отправку почты, вот несколько идей.
- Используйте SmtpDeliveryLocation для вывода электронной почты в папку вместо почтового сервера. Затем вы можете проверить папку.
- Отправьте электронное письмо, затем запросите удаленный POP-сервер, чтобы узнать, пришло ли оно.
- Отправляйте и считайте, что это просто сработало, если они не являются исключениями. Я не могу вспомнить, блокирует или не блокирует SmtpClient.Send.
Поскольку эти тесты обычно означают разговор с внешними вещами, их можно назвать integration tests, а не модульными тестами.
Но в целом, я думаю, вы были бы более обеспокоены тем, что вы правильно определили форматирование/адрес электронной почты, чем правильно ли Microsoft smtpClient. Таким образом, модульное тестирование и макеты имеют больше смысла.
Согласовано, это зависит от того, что вы хотите проверить: почтового сервера или бизнес-логики, которая отвечает за создание почты. –