Как проверить с помощью rspec, какой шаблон используется при создании электронного письма? (Рельсы 3.0.7)

Я пытаюсь написать несколько тестов для электронных писем, созданных с помощью класса почтовой программы, используя rspec и email_spec (Ruby on Rails 3.0.7)

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

Любая идея о том, как это сделать? Я потратил 3 часа на поиск решения, но ничего не нашел.

Спасибо!


person Dorian    schedule 08.07.2011    source источник
comment
Чего вы пытаетесь достичь с помощью этого теста?   -  person dodecaphonic    schedule 05.09.2012
comment
Если я правильно помню ситуацию, у меня было несколько шаблонов электронной почты, и я хотел проверить, отправляются ли электронные письма с правильным шаблоном.   -  person Dorian    schedule 06.09.2012


Ответы (2)


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

person studiou    schedule 31.12.2012
comment
Нет, к сожалению, это не работает со спецификацией почтовой программы. - person lulalala; 12.01.2021

Это немного жульничает, поскольку вы на самом деле не проверяете, какой шаблон был сгенерирован...

Тем не менее, я просто хотел выполнить быструю проверку работоспособности, чтобы (вероятно) было создано правильное электронное письмо, поэтому этого было достаточно для моих нужд:

# In RSpec:
expect(ActionMailer::Base.deliveries.last.subject)
  .to eq I18n.t("name.of.email.subject")

# In MiniTest:
assert_equal I18n.t("name.of.email.subject"),
  ActionMailer::Base.deliveries.last.subject
person Tom Lord    schedule 07.12.2016