2015-04-05 48 views
15

Bir actionmailer sınıfım ve ilişkili bir ek yüküm var, mükemmel çalışıyor. Benim birim testimde (varsayılan olarak en düşük raylar), e-posta gövdesi boş. Neden?Raylarda neden posta gövdem boş, yalnızca benim testimde?

benim mailler sınıfı:

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 

benim 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 

bu postasının için görüşlerini boş değildir ve doğru içerikleri aslında e-postalar gönderilir. Peki e-posta gövdesi neden testimde boş?

+1

'email.body.encoded' işlevini kullanın. Bunu bir cevap olarak gönderiyorum, ama neden bu değişikliği yapmak zorunda olduğumu hatırlamıyorum. – messanjah

cevap

41

Büyük olasılıkla e-posta şablonlarının iki sürümüne sahipsiniz (text.erb ve html.erb).

Eğer öyleyse, düz metin e-posta için email.text_part.body.to_s ve HTML sürümü için email.html_part.body.to_s kullanabilirsiniz.

+2

Kutsal saçmalık neden bu hiç belgelenmiyor ?! Teşekkür ederim! – honktronic

+0

Bunu nerede yapıyorsunuz? Benim düzenlerim mailler jeneratörü kullanmam için üretilmiyordu, bu yüzden neye benzemesi gerektiğini bilmiyorum – MCB

+0

Daha fazla yorum yapabilirdim – Dan