24

मेरी ActionMailer :: testcase परीक्षण में, मैं उम्मीद कर रहा हूँ:रेल - यह जांचने के लिए कि एक्शनमेलर ने एक विशिष्ट अनुलग्नक भेजा है?

@expected.to  = BuyadsproMailer.group_to(campaign.agency.users) 
@expected.subject = "You submitted #{offer_log.total} worth of offers for #{offer_log.campaign.name} " 
@expected.from = "BuyAds Pro <[email protected]>" 
@expected.body = read_fixture('deliver_to_agency') 

@expected.content_type = "multipart/mixed;\r\n boundary=\"something\"" 
@expected.attachments["#{offer_log.aws_key}.pdf"] = { 
    :mime_type => 'application/pdf', 
    :content => fake_pdf.body 
} 

और एक वास्तविक पीडीएफ सामान्य रूप से S3 से लाई गई के बजाय fake_pdf पाने के लिए मेरी मेलर ठूंठ ताकि मुझे यकीन है कि पीडीएफ़ मैच के शव हूँ ।

हालांकि, मैं इस लंबी त्रुटि मुझे बता कि एक ईमेल की उम्मीद थी मिलता है लेकिन एक अलग ईमेल प्राप्त हुआ है:

<...Mime-Version: 1.0\r\nContent-Type: multipart/mixed\r\nContent-Transfer-Encoding: 7bit...> expected but was 
<...Mime-Version: 1.0\r\nContent-Type: multipart/mixed;\r\n boundary=\"--==_mimepart_50f06fa9c06e1_118dd3fd552035ae03352b\";\r\n charset=UTF-8\r\nContent-Transfer-Encoding: 7bit...> 

मैं चारसेट या उत्पन्न ईमेल का हिस्सा सीमा मिलान नहीं कर रहा हूँ।

मैं अपने अपेक्षित ईमेल के इस पहलू को कैसे परिभाषित या रोक सकता हूं?

उत्तर

38

यहाँ एक उदाहरण है कि मैं एक विशिष्ट अनुलग्नक के मेरे rspec परीक्षण से नकल है, आशा है कि यह मदद करता है (मेल अपने मेलर विधि कॉल करने या .deliver बुला के बाद प्रसव सरणी में देखना द्वारा बनाने जा सकती है):

mail.attachments.should have(1).attachment 
    attachment = mail.attachments[0] 
    attachment.should be_a_kind_of(Mail::Part) 
    attachment.content_type.should be_start_with('application/ics;') 
    attachment.filename.should == 'event.ics' 
+0

क्या एमडी 5 हैश की तुलना करने का कोई तरीका है? – mehulkar

+2

अच्छा जवाब। यह जांचकर कि परिणाम एक प्रकार का 'मेल :: भाग' अनावश्यक लगता है, और अगर रेल नाम के भविष्य के संस्करण में कक्षा का नाम अलग है तो परीक्षण अनावश्यक रूप से नाजुक हो सकता है। यदि ऑब्जेक्ट सही प्रकार का नहीं है, तो 'content_type' और 'filename' विधियों का जवाब देने की संभावना बहुत कम है। –

+1

क्या होगा यदि मैं रेल न्यूनतमतम ढांचे का उपयोग कर रहा हूं? –