Как проверить отправку электронной почты с помощью Rspec? - PullRequest
26 голосов
/ 16 ноября 2009

Каковы лучшие практики и инструменты для проверки отправки электронной почты с использованием rspec с Rails?

Например, как мне проверить, что электронное письмо отправлено, или что я должен проверить, чтобы иметь эффективное тестирование и приемлемый охват.

Если вам, ребята, нужен пример, как бы я пошел и проверил это:

class UserMailer < ActionMailer::Base

 def jobdesc_has_been_reviewed(user, title)
    @body[:title]  = title
    @body[:jobdesc]  = jobdesc
    @body[:url]  = "http://" + user.account.subdomain + "." + Constants::SITE_URL + "/jobdescs/#{jobdesc.id}"
 end

end

Ответы [ 2 ]

24 голосов
/ 16 ноября 2009

email-spec выглядит как хорошая библиотека

http://github.com/bmabey/email-spec

0 голосов
/ 16 ноября 2009

Что именно вы хотите проверить?

Хотите проверить, действительно ли письмо действительно отправлено?

Я не рекомендую его, так как он замедлит ваш тест, и это действительно зависит от компьютера, на котором вы используете свои тесты (сетевое соединение, SMTP-сервер).

Что я обычно делаю, так это проверяю, правильно ли выполняется действие контроллера / модели / грабли, отправляющее электронные письма (то есть без ошибок, я заглушаю последний вызов отправки). Я также проверяю, правильно ли указаны тело, заголовок и получатели письма.

Edit:

Не имеет прямого отношения к тестированию, но я только что прочитал эту статью .

Мне нравится его точка зрения об использовании модели для отправки электронных писем. Итак, чтобы объяснить немного подробнее:

Я бы использовал контроллер для настройки переменных вида, таких как @body, @title, @ получатель.

Так что я бы проверил, что при заданных правильных параметрах почтовый шаблон (который является представлением) корректно отображается. Это было бы ошибкой с моей точки зрения.

Я обновлю этот пост примером, когда вернусь домой позже сегодня.

...