में यूनिट परीक्षण के दौरान एक अलग ईमेल कॉन्फ़िगरेशन का उपयोग करें मैं अपने नियंत्रकों में से एक की कार्रवाई में केकेईमेल क्लास का उपयोग कर एक ईमेल भेज रहा हूं। मेरे पास इस नियंत्रक के लिए एक यूनिट परीक्षण है जो ईमेल कोड जोड़ने से पहले ठीक काम कर रहा था।केकेपीएचपी
SocketException: Could not send email.
इस तथ्य को मैं अपने स्थानीय मशीन बंद ईमेल भेजने के लिए किसी भी तरह की जरूरत नहीं है कि करने के लिए नीचे है: ईमेल जोड़ने के बाद मैं इस त्रुटि मिलती है।
इसलिए मैंने सोचा कि शायद एक अच्छा विचार है कि कॉन्फ़िगर/email.php में ईमेल कॉन्फिग क्लास के अंदर दो अलग-अलग कॉन्फ़िगरेशन विकल्प होंगे (डेटाबेस कॉन्फ़िगरेशन फ़ाइल कैसे काम करता है)। मेल परिवहन का उपयोग करके डिफ़ॉल्ट, और डीबग परिवहन का उपयोग कर एक परीक्षण। इसके साथ समस्या यह है कि, डेटाबेस कॉन्फ़िगरेशन के विपरीत, केक स्वचालित रूप से परीक्षण के दौरान दोनों के बीच स्विच नहीं करता है।
एकमात्र चीज जिसे मैंने सोचा है, ईमेलकॉन्फ क्लास में एक कन्स्ट्रक्टर जोड़ना है और परीक्षण करना है कि हम यूनिट परीक्षण कर रहे हैं, लेकिन मुझे यकीन नहीं है कि चेक क्या होना चाहिए।
इस की तर्ज पर कुछ:
class EmailConfig {
public $default = array(
'transport' => 'Mail'
);
public $test = array(
'transport' => 'Debug'
);
public function __construct() {
if ($isUnitTesting) {
$this->default = $this->test;
}
}
}
मेरे रास्ते ऊपर सुझाए गए हैं एक अच्छा विचार हो सकता है? यदि नहीं, तो इकाई परीक्षण के दौरान ईमेल के लिए मैं अन्य तरीकों का उपयोग कैसे कर सकता हूं?
अपडेट - 4/10/2012
मुझे लगता है कि मैं गलत तरीके से इस बारे में जा रहा था। this answer पर देखकर ऐसा लगता है कि $default
कॉन्फ़िगरेशन डिफ़ॉल्ट रूप से लोड नहीं होता है, आपको इसे CakeEmail::config()
विधि पर कॉल करके या इसे कन्स्ट्रक्टर में देकर निर्दिष्ट करना होगा। इसलिए मैं यह मेरे पत्ते अब दो विकल्प लगता है: (? किसी भी तरह)
- नियंत्रक की जांच में अगर हम इकाई परीक्षण कर रहे हैं और फिर 'परीक्षण' config का उपयोग करें।
- ईमेल भेजने में सक्षम होने के लिए मेरे कंप्यूटर को सेट करें।
मैं पहले ऐसा करना चाहता हूं लेकिन यह सुनिश्चित नहीं करता कि यह जांच के साथ नियंत्रक कार्रवाई को फुलाए बिना कैसे किया जा सकता है यदि हम यूनिट परीक्षण कर रहे हैं, तो ऐसा करना गलत लगता है।
बस अपने परीक्षण मामले पर 'सेटअप' में कॉन्फ़िगरेशन सेट अप करें। एफवाईआई, केक एक 'डीबगट्रांसपोर्ट' के साथ आता है जिसे आप अपनी कॉन्फ़िगरेशन सेटिंग्स में उपयोग कर सकते हैं जो वास्तव में भेजने के अलावा सब कुछ करेगा, और आपके परीक्षणों में उपयोग करने के लिए हेडर और संदेश लौटाएगा। सुपर सहायक :) – jeremyharris
आपकी समस्याएं परीक्षण से बड़ी हो सकती हैं। वास्तविक जीवन में ईमेल नियमित रूप से विफल हो जाते हैं; सुनिश्चित करें कि उसके लिए कोड खाते हैं। मैं 1) सुनिश्चित करता हूं कि परीक्षण सफल और असफल ईमेल दोनों के लिए मौजूद हैं और 2) नकली केकईमेल ऑब्जेक्ट का उपयोग करने का प्रयास करें। सुनिश्चित नहीं है कि आप # 2 करने के बारे में कैसे जाएंगे; अन्यथा मैं जवाब दूंगा। –
@ जेरेमीहरिस मैं पहले ही डीबगट्रांसपोर्ट के बारे में जानता था, वास्तव में मैं उन तरीकों को देख रहा था जिनका उपयोग मेलट्रांसपोर्ट के बजाय किया जा सकता था। क्या आप सेटअप में कॉन्फ़िगरेशन को सेट अप करने के तरीके पर विस्तार करने में सक्षम होंगे, मैं अपने सिर को काफी काम करने में सक्षम नहीं था कि यह कैसे काम कर सकता है। – Josh