Ответ 1
Альтернативный ответ: Dumbster - это поддельный SMTP-сервер, предназначенный для тестирования. Он написан на Java.
Я хочу запустить модульные тесты (Junit) на некоторых классах моделей, которые обычно будут отправлять электронные письма, подтверждающие, что все произошло. Есть ли макет почтового сервера, который вы можете использовать с модульными тестами, которые позволят вам подтвердить, что ваш прогон попытался отправить электронное письмо без фактической отправки электронной почты?
Кажется, было бы неплохо иметь, просто не уверен, что я хочу написать свою собственную. Стек приложения для аспекта электронной почты - Velocity + Spring, поэтому было бы предпочтительнее, если на тестовом сервере можно указать простое изменение файла applicationContext.xml.
Альтернативный ответ: Dumbster - это поддельный SMTP-сервер, предназначенный для тестирования. Он написан на Java.
Я думаю, что проект Mock JavaMail - это то, что вы хотите.
Я бы посмотрел на GreenMail, который жив (по-видимому, Dumbster мертв) с множеством функциональных возможностей и хороших примеров.
Я предполагаю, что вы используете Javamail, и проблема в том, что javax.mail.Session
является окончательным и поэтому не может быть издевательством.
Похоже, что другие предложили вам просто определить свой собственный интерфейс "mail session" и создать реализацию, которая использует Javamail. В ваших тестах вы просто вводите макет в режиме реального мира, вы вводите реализацию Javamail.
Как JMock, так и EasyMock будут поддерживать все утверждения, которые могут возникнуть в сообщении, которое вы отправляете, и завершение тестирования.
Как правило, я стараюсь избегать любых внепроцессных вызовов из модульных тестов - он убивает вас, когда вы часто запускаете тестовый набор, что обычно означает, что он меньше работает и что проблемы с базой кода начинают происходить.
Вы можете попробовать JavaMail Mock2 https://github.com/salyh/javamail-mock2
В основном это касается IMAP/POP3, но SMTP Mock также доступен. Его доступный в центральной части города.
Функции
Phil Haack имеет сообщение в блоге об отправке по электронной почте по модулю тестирования, с решением, которое он закодировал вокруг бесплатного почтового сервера.
Мое решение состояло в том, чтобы обернуть почтовый сервер в класс, который принимает все параметры конфигурации и имеет метод send()
. В моих тестах я бы издевался над этим классом и переопределял send()
тем, что сохраняет текущие параметры для assert.
Чтобы проверить, работает ли почтовая служба, отправьте себе почту локально. Попробуйте hMail, если вы находитесь в Windows.