ruby-on-rails unit-testing email actionmailer minitest

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.