मान लीजिए कि आप अगर एक पेज उचित यूआरएल द्वारा पहुँच गया था जांच करने के लिए एक समारोह लिख रहे हैं। एक पेज stackoverflow.com/questions/123 पर संपर्क किया जा सकता है, जबकि, उदाहरण के लिए, हम (एसईओ कारणों के लिए) पसंद करेंगे यह रीडायरेक्ट करने के लिए stackoverflow.com/questions/123/how-do के लिए - पेज एक "प्रामाणिक" ठूंठ है मैं-चाल-कछुआ-इन-लोगो - और वास्तविक रीडायरेक्ट सुरक्षित रूप से अपनी ही विधि में निहित है (उदाहरण के लिए redirectPage ($ url)।), लेकिन कैसे आप ठीक ढंग से समारोह है जो यह कहता है परीक्षण करते हैं?साइड इफेक्ट्स के साथ यूनिट परीक्षण फ़ंक्शन?
उदाहरण के लिए, निम्नलिखित समारोह ले:
function checkStub($questionId, $baseUrl, $stub) {
canonicalStub = model->getStub($questionId);
if ($stub != $canonicalStub) {
redirectPage($baseUrl . $canonicalStub);
}
}
यदि आप इकाई परीक्षण करने के लिए checkStub() फ़ंक्शन थे, रीडायरेक्ट रास्ते में नहीं होगा?
यह एक बड़ी समस्या का हिस्सा है जहां कुछ कार्य बहुत बड़े होते हैं और इकाई परीक्षण के क्षेत्र को छोड़कर एकीकरण परीक्षण की दुनिया में छोड़ देते हैं। मेरा दिमाग तुरंत रूटर और नियंत्रकों के बारे में सोचता है क्योंकि इन प्रकार की समस्याएं होती हैं, क्योंकि उनका परीक्षण करने के लिए आवश्यक रूप से अपने स्वयं के कार्य तक ही सीमित होने के बजाय पृष्ठों की पीढ़ी की ओर जाता है।
क्या मैं इकाई परीक्षण में बस असफल हूं?
धीरे ... और क्या तुम सच में यहाँ का परीक्षण करने के ... आप रीडायरेक्ट, checkStub निकाल देते हैं तो कोशिश कर रहे हैं पर पुनर्विचार विधि बहुत कुछ नहीं करती है इसलिए मुझे यहां वास्तविक परीक्षण की जानकारी नहीं है। आम तौर पर आप दुष्प्रभावों का परीक्षण करते हैं कि इस तरह के एक समारोह का कारण बनता है। – Gishu
@ गिशू: हाँ, यह एक अविश्वसनीय रूप से दोषपूर्ण उदाहरण है जिसे मैंने पहले की समस्या से हल किया था .. समस्या ठीक हो गई थी, लेकिन उदाहरण (रीडायरेक्टिंग) मेरे सिर में फंस गया।प्रश्न के अंत में फोकस करें - राउटर, नियंत्रक - प्रश्न के असली मांस के रूप में। मैं उन कार्यों का परीक्षण कैसे करूं जिनके फोकस बड़े पैमाने पर "चीजें बनाते हैं" लेकिन जिन्हें अभी भी अपने आंतरिक आदेश और तर्क के कारण परीक्षण करने की आवश्यकता है। मैं अब बाहर निकलने जा रहा हूं और मैं सुबह में इस सवाल से नरक को संपादित कर दूंगा। उम्मीद है कि अब आप मेरा इरादा देख सकते हैं (यह जानने में मदद कर सकता है कि मैं यूनिट परीक्षण के लिए नया ब्रांड हूं)। – AgentConundrum
आपने बहुत कुछ कहा है कि आप वस्तु निर्माण के साथ तर्क मिश्रण कर रहे हैं, जो यूनिट परीक्षण को मुश्किल बनाता है। क्या आप इन दो चिंताओं को विभाजित कर सकते हैं? यदि ऐसा है, तो अपने यूनिट परीक्षण लिखना बहुत छोटा होगा। – strager