2015-04-05 8 views
15

मेरे पास एक एक्शनमेलर क्लास और संबंधित ओवरहेड है, यह पूरी तरह से काम करता है। मेरे यूनिट टेस्ट में (रेल न्यूनतम डिफ़ॉल्ट) हालांकि, ईमेल निकाय खाली है। ऐसा क्यों है?रेल में मेरा मेल निकाय केवल मेरे परीक्षण में क्यों खाली है?

मेरी मेलर वर्ग:

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 

अपने परीक्षण:

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 

इस मेलर के लिए विचारों खाली नहीं कर रहे हैं, और सही सामग्री वास्तव में ईमेल में भेजा जाता है। तो मेरे परीक्षण में ईमेल निकाय खाली क्यों है?

+1

'email.body.encoded' का उपयोग करें। मैं इसे एक उत्तर के रूप में पोस्ट करूंगा, लेकिन मुझे याद नहीं है कि मुझे यह परिवर्तन क्यों करना पड़ा। – messanjah

उत्तर

41

आपके पास शायद ईमेल टेम्पलेट्स के दो संस्करण हैं (text.erb और html.erb)।

यदि ऐसा है, तो आप सादा-पाठ ईमेल के लिए email.text_part.body.to_s और HTML संस्करण के लिए email.html_part.body.to_s का उपयोग कर सकते हैं।

+2

पवित्र बकवास यह बिल्कुल दस्तावेज क्यों नहीं है ?! धन्यवाद! – honktronic

+0

आप यह कहां करते हैं? जब मैं मेलर जेनरेटर का उपयोग करता था तो मेरे लेआउट जेनरेट नहीं किए गए थे इसलिए मुझे नहीं पता कि यह – MCB

+0

जैसा दिखना चाहिए, मेरी इच्छा है कि मैं – Dan

संबंधित मुद्दे