I have an actionmailer class and associated overhead, it works perfectly. In my unit test (rails default minitest) however, the email body is empty. Why is that?
my mailer class:
class TermsMailer < ApplicationMailer
default from: "[email protected]"
def notice_email(user,filename)
@user = user
@file = filename
mail(to: "[email protected]", subject: 'Data downloaded')
end
end
my test:
require 'test_helper'
class TermsMailerTest < ActionMailer::TestCase
test "notice" do
email = TermsMailer.notice_email(users(:me),'file.ext').deliver_now
assert_not ActionMailer::Base.deliveries.empty?
assert_equal ['[email protected]'], email.from
assert_equal ['[email protected]'], email.to
assert_equal 'Data downloaded', email.subject
assert_equal 'arbitrary garbage for comparison', email.body.to_s
end
end
The views for this mailer are not blank, and the correct contents are in fact sent in the emails. So why is the email body blank in my test?
email.body.encoded
. I would post this as an answer, but I don't remember why I had to make that change. – Lucho