Подтвердить что ты не робот

Rails - Как проверить, что ActionMailer отправил конкретное приложение?

В моем тесте ActionMailer:: TestCase я ожидаю:

@expected.to      = BuyadsproMailer.group_to(campaign.agency.users)
@expected.subject = "You submitted #{offer_log.total} worth of offers for #{offer_log.campaign.name} "
@expected.from    = "BuyAds Pro <[email protected]>"
@expected.body    = read_fixture('deliver_to_agency')

@expected.content_type = "multipart/mixed;\r\n boundary=\"something\""
@expected.attachments["#{offer_log.aws_key}.pdf"] = {
  :mime_type => 'application/pdf',
  :content => fake_pdf.body
}

и закройте мою почтовую программу, чтобы получить fake_pdf вместо реального PDF файла, который обычно извлекается из S3, поэтому я уверен, что тела файлов PDF совпадают.

Однако, я получаю эту длинную ошибку, сообщая мне, что было отправлено одно электронное письмо, но получил несколько другое электронное письмо:

<...Mime-Version: 1.0\r\nContent-Type: multipart/mixed\r\nContent-Transfer-Encoding: 7bit...> expected but was
<...Mime-Version: 1.0\r\nContent-Type: multipart/mixed;\r\n boundary=\"--==_mimepart_50f06fa9c06e1_118dd3fd552035ae03352b\";\r\n charset=UTF-8\r\nContent-Transfer-Encoding: 7bit...>

Я не подхожу к кодировке или частичной границе созданного письма.

Как определить или закрыть этот аспект моих ожидаемых писем?

4b9b3361

Ответ 1

Вот пример, который я скопировал из моего теста rspec конкретного приложения, надеюсь, что он помогает (почта может быть создана, вызвав ваш метод почтовой программы или заглянув в массив доставки после вызова .deliver):

  mail.attachments.should have(1).attachment
  attachment = mail.attachments[0]
  attachment.should be_a_kind_of(Mail::Part)
  attachment.content_type.should be_start_with('application/ics;')
  attachment.filename.should == 'event.ics'