मैं यह पता लगाने की कोशिश कर रहा हूं कि एक्सप्रेस का उदाहरण कैसे बंद करें। असल में, मैं .listen(port)
कॉल के विपरीत चाहता हूं - मुझे स्ट्रीम बंद करने, बंदरगाह को छोड़ने और बंद करने के लिए एक एक्सप्रेस सर्वर कैसे प्राप्त करें?परीक्षण के लिए मैं ExpressJS के उदाहरण को प्रोग्रामेटिक रूप से कैसे बंद कर सकता हूं?
मुझे पता है ऐसा लगता है कि यह एक अजीब सवाल हो सकता है, इसलिए यहां संदर्भ है; शायद इस तक पहुंचने का एक और तरीका है और मैं इसके बारे में गलत तरीके से सोच रहा हूं। मैं अपने socket.io/nodejs ऐप के लिए एक परीक्षण ढांचा स्थापित करने की कोशिश कर रहा हूं। यह एक एकल पृष्ठ ऐप है, इसलिए मेरी परीक्षण स्क्रिप्ट्स में (मैं Mocha का उपयोग कर रहा हूं, लेकिन यह वास्तव में कोई फर्क नहीं पड़ता) मैं सर्वर को शुरू करने, इसके खिलाफ परीक्षण चलाने में सक्षम होना चाहता हूं, और फिर सर्वर को बंद कर सकता हूं। मैं यह मानकर यह प्राप्त कर सकता हूं कि या तो परीक्षण शुरू होने से पहले सर्वर चालू हो जाता है या परीक्षणों में से एक होने से सर्वर शुरू होता है और प्रत्येक बाद के परीक्षण के बाद यह लगता है कि यह वास्तव में गन्दा है। मैं प्रत्येक टेस्ट फ़ाइल को उचित सेटिंग्स के साथ एक सर्वर इंस्टेंस शुरू करना पसंद करूंगा और फिर परीक्षण खत्म होने पर उस इंस्टेंस को बंद कर दूंगा। इसका मतलब है कि परीक्षण चलाने के लिए कोई अजीब निर्भरता नहीं है और सब कुछ साफ है। इसका मतलब यह भी है कि मैं स्टार्टअप/शटडाउन परीक्षण कर सकता हूं।
तो, यह कैसे करें इसके बारे में कोई सलाह है? मैंने इसे नीचे लाने के लिए अपवादों को मैन्युअल रूप से ट्रिगर करने के बारे में सोचा है, लेकिन यह गन्दा लगता है। मैंने एक्सप्रेस डॉक्स और स्रोत के माध्यम से खोला है, लेकिन ऐसा कोई प्रतीत नहीं होता है जो सर्वर को बंद कर देगा। इसके लिए socket.io में कुछ भी हो सकता है, लेकिन चूंकि सॉकेट सर्वर सिर्फ एक्सप्रेस सर्वर से जुड़ा हुआ है, मुझे लगता है कि यह एक्सप्रेस परत पर होने की आवश्यकता है।
मोचा परीक्षण के मामले में, जहां आपको आवश्यकता है ('ऐप') मैं ऐप ऑब्जेक्ट पर विस्तार करता हूं: app.server = app.listen (3000); तो बाद में मैं कह सकता हूं: var app = आवश्यकता ('./ app'); app.server.close(); सर्वर का परीक्षण करते समय –
, https://github.com/visionmedia/supertest देखें, यह आपको वास्तविक सर्वर लॉन्च करने के लिए w/o परीक्षण करने देगा –