2010-01-30 2 views
4

Я думаю, что это может быть обычная ситуация ... Я работаю над системой восстановления пароля для приложения Rails, которое отправляет ссылку пользователю на запуск новой формы пароля. Довольно стандартный материал.Могу ли я просматривать представления Mailer, фактически не отправляя электронное письмо?

На моем сервере разработки У меня нет программного обеспечения для отправки почты, настроенного или настроенного (sendmail, настройки SMTP и т. Д.). В config/environments/development.rb У меня есть config.action_mailer.raise_delivery_errors = false, чтобы устранить любые ошибки, возникающие с тех пор, как у меня нет локальной почты сервер включен. Это все хорошо и прекрасно.

Однако я хотел бы просмотреть содержимое электронных писем во время производства без фактической отправки почты. Я знаю, что можно сделать это через тестирование, утверждая, что отправленная (или ошибочная) почта имеет правильный контент. Есть ли способ перенаправить взгляды или что-то еще, только временно в производство, для просмотра HTTP-сообщения версии электронной почты, а не слепо делать утверждения?

ответ

1

Если у вас есть настройка UserMailer с методом password_reminder, вы можете позвонить create_password_reminder вместо deliver_password_reminder и создать сообщение без фактической отправки. Затем вы можете направить вывод в файл журнала:

Где бы:

UserMailer.deliver_password_reminder 

Вы можете заменить:

logger.info UserMailer.create_password_reminder.encoded 

Или, если вы хотите, чтобы отправить его в файл, вы можете это сделать.

Это, как говорится, производственная среда действительно не место для такого рода вещей. Мне никогда не приходилось это делать, потому что мои почтовые программы имеют полное покрытие для тестирования. Я бы рассмотрел этот вариант вместо этого, но я дал ответ, который вы просили, потому что я не знаю вашей полной ситуации. Счастливое кодирование :)

+0

Регистрация будет выполнена. Я новичок в тестировании Rails и (к сожалению) хотел видеть созданные сообщения, чтобы я мог основывать свои тесты на них, а не слепо представлять себе, как должны выглядеть сообщения, следуя коду. Это, безусловно, костыль :) – Andrew

+0

На самом деле, он автоматически регистрирует отправленные сообщения без обращения к журналу (по крайней мере, в Rails 2.3), поэтому мне не нужно вообще менять свой код - мне просто нужно проверить журнал , – Andrew

+0

Конечно, я понимаю. TDD имеет крутую кривую обучения, и почти все что-то новое нужно сделать, прежде чем вы сможете понять, как правильно ее протестировать :) –

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

  • Нет связанных вопросов^_^