2014-11-20 2 views
0

Используя RSpec, я хотел бы проверить способность моего приложения подключаться к моему SMTP-серверу без (обязательно) доставки любых сообщений.Rspec Тестирование SMTP-соединения

Как я могу открыть соединение (с логином) на сервере электронной почты SMTP и проверить/просмотреть полученный ответ?

+0

Есть несколько почтовых издевательств, которые вы можете использовать, например, вы можете использовать или вы можете использовать http://mailcatcher.me для более системного теста. –

+0

Спасибо. Я думаю, что mailcatcher, вероятно, выполняет большую часть того, что я надеюсь покрыть испытаниями. Чтобы мои тесты были более подробными, я надеялся проверить элементы процесса создания электронной почты, включая проверку параметров smtp. Я знаю, что я могу переключить свои настройки smtp из теста на smtp в конфигурации, но это делает тесты более хрупкими, чем я хотел бы, или, по крайней мере, тестом, который работает только с некоторыми другими настройками, которые вы должны помнить для переключения. –

+0

По соглашению конфигурации (включая конфигурации SMTP) объявляются в файле (например, application.yml), который затем разбивается на этапы ('development',' test', 'production' ...), поэтому вам не нужно ничего переключаться, и тест не является хрупким - тестирование вашей конфигурации не должно быть частью тестирования вашей функциональности ... см. также http://blog.rubybestpractices.com/posts/gregory/032 -эмиссионный-3-configurable.html –

ответ

0
smtp = Net::SMTP.new 'mail.example.com', example_port 
# smtp.enable_starttls_auto # uncomment this if starttls is needed 
# smtp.enable_tls   # uncomment this if ssl/tls is needed but starttls is not supported 
smtp.start('mydomain.example.com') do 
    expect{ smtp.authenticate '[email protected]', 'mypassword', 'plain' }.to_not raise_error 
end 

Вызов authenticate поднимет Net::SMTPAuthenticationError, если аутентификация не проходит.

В противном случае он вернет Net::SMTP::Response, а при вызове status на ответе будет возвращено "235".

Смежные вопросы