Ответ 1
Соединитель email_spec для deliver_to
фактически не запускает почтовое сообщение с помощью типичных методов доставки, он просто проверяет сообщение, для которого он отправляется.
Чтобы протестировать ваш перехватчик, вы можете напрямую вызвать метод delivering_email
it 'should change email address wen interceptor is run' do
email = UserMailer.registration_automatically_generated(@user)
MailInterceptor.delivering_email(email)
email.should deliver_to('[email protected]')
end
Другой вариант - позволить сообщению доставлять как обычно, и проверить, что он был отправлен в нужное место, с помощью email_spec last_email_sent
it 'should intercept delivery' do
reset_mailer
UserMailer.registration_automatically_generated(@user).deliver
last_email_sent.should deliver_to('[email protected]')
end
Возможно, было бы неплохо использовать оба теста, чтобы убедиться, что MailInterceptor
изменяет сообщение так, как вы ожидали. Второй тест - это скорее тест интеграции, тестирование которого MailInterceptor
подключено к системе доставки.