Сопоставитель email_spec для deliver_to
на самом деле не запускает почтовое сообщение с помощью обычных методов доставки, он просто проверяет сообщение на предмет, кому оно отправляется.
Чтобы проверить ваш перехватчик, вы можете напрямую вызвать метод deliverying_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('xxxxx@xxxxxx.com')
end
Другой вариант - разрешить доставку сообщения в обычном режиме и проверить, что оно было отправлено в нужное место, используя last_email_sent
email_spec's
it 'should intercept delivery' do
reset_mailer
UserMailer.registration_automatically_generated(@user).deliver
last_email_sent.should deliver_to('xxxxx@xxxxxx.com')
end
Возможно, было бы неплохо использовать оба теста, первый, чтобы убедиться, что MailInterceptor
изменяет сообщение так, как вы ожидаете. Второй тест - это скорее интеграционный тест, проверяющий, что MailInterceptor
подключен к системе доставки.