ruby on rails - En Rails, ¿por qué mi cuerpo de correo está vacío solo en mi prueba?
ruby-on-rails unit-testing (1)
Tengo una clase de actionmailer y una sobrecarga asociada, funciona perfectamente. En mi prueba de unidad (rieles por defecto minitest) sin embargo, el cuerpo del correo electrónico está vacío. ¿Porqué es eso?
mi clase de correo
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
mi prueba:
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
Las vistas para este anuncio de correo no están en blanco y, de hecho, los contenidos correctos se envían en los correos electrónicos. Entonces, ¿por qué el cuerpo del correo electrónico está en blanco en mi prueba?
Probablemente tenga dos versiones de las plantillas de correo electrónico ( text.erb
y html.erb
).
Si es así, puede usar email.text_part.body.to_s
para correo electrónico de texto sin formato y email.html_part.body.to_s
para la versión HTML.