RSpec ActionMailterで送信したメールのテストの書き方


送信されたメールを取得
[ruby]
sent_mail = ActionMailer::Base.deliveries.last
[/ruby]

Subjectのテスト
[ruby]
expect(sent_mail.subject).to =~ /Hello/
[/ruby]

マルチパートのHTMLをテスト
[ruby]
html_part = sent_mail.body.parts.find{|p| p.content_type.match /html/ }
expect(html_part.body.raw_source).to include ‘Hello’
[/ruby]

マルチパートのテキストをテスト
[ruby]
text_part = sent_mail.body.parts.find{|p| p.content_type.match /text/ }
expect(text_part.body.raw_source).to include ‘Hello’
[/ruby]

Rails3 で コントローラからメールが送信されたか Rspec で確認のメモ – 牌語備忘録 – pygo
ruby – Testing ActionMailer multipart emails with RSpec – Stack Overflow

,