MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

मोचा कैसे जानता है कि परीक्षण सूट में पहले कौन सी फाइल लोड करनी है

मोचा परीक्षण फ़ाइलों को कैसे लोड करता है, इसके लिए कोई डिफ़ॉल्ट सेट ऑर्डर नहीं है।

जब मोचा निर्देशिका स्कैन करता है इसे फ़ाइलों को खोजने के लिए, यह fs.readdirSync का उपयोग करता है . यह कॉल readdir(3) , जो स्वयं आदेश की गारंटी नहीं देता है। अब, एक कार्यान्वयन विचित्रता के कारण fs.readdir . का आउटपुट और fs.readdirSync Linux (और शायद सामान्य रूप से POSIX सिस्टम) पर सॉर्ट किया गया है, लेकिन Windows पर नहीं . इसके अलावा, यह संभव है कि लिनक्स पर क्रमबद्ध व्यवहार को अंततः हटाया जा सकता है क्योंकि प्रलेखन कहता है fs.readdir बस है readdir(3) और बाद वाला आदेश की गारंटी नहीं देता है। एक अच्छा तर्क दिया जाना चाहिए कि लिनक्स पर देखा गया व्यवहार एक बग है (उस मुद्दे को देखें जिसे मैंने ऊपर लिंक किया है)।

ध्यान दें कि एक --sort है विकल्प जो मोचा को ढूंढने के बाद फाइलों को सॉर्ट करेगा। लेकिन यह डिफ़ॉल्ट रूप से बंद होता है।

आप जो व्यवहार देखते हैं, वह न केवल लोडिंग ऑर्डर द्वारा बल्कि निष्पादन आदेश द्वारा भी समझा जा सकता है . यहाँ क्या होता है:

  1. मोचा परीक्षण फ़ाइलों को लोड करता है और उन्हें निष्पादित करता है। तो आपकी फ़ाइल के शीर्ष स्तर पर जो कुछ भी है वह तुरंत निष्पादित होता है . इसका मतलब है कि test_helper.js . में कोड तुरंत निष्पादित करता है। वर्णन . के लिए प्रत्येक कॉल तुरंत इसकी कॉलबैक निष्पादित करता है। हालांकि, इसे पर कॉल करता है बाद में निष्पादन के लिए परीक्षण रिकॉर्ड करें। मोचा खोज रहा है ऐसा करते समय आपके परीक्षण लेकिन निष्पादित . नहीं उन्हें तुरंत।

  2. एक बार सभी फाइलें निष्पादित हो जाने के बाद, मोचा परीक्षण चलाना शुरू कर देता है। इस समय तक, test_helper.js . में कोड पहले ही चल चुका है और आपका परीक्षण उसके द्वारा बनाए गए कनेक्शन से लाभान्वित होता है।

प्रमुख चेतावनी डेटाबेस से कनेक्ट करना एक एसिंक्रोनस ऑपरेशन है, और वर्तमान में ऐसा कुछ भी नहीं है जो गारंटी देता है कि test_helper.js में एसिंक्रोनस ऑपरेशन परीक्षण शुरू होने से पहले पूरा हो जाएगा। यह अभी ठीक काम कर रहा है यह सिर्फ किस्मत है।

अगर यह मैं होता, तो मैं या तो कनेक्शन निर्माण को वैश्विक एसिंक्रोनस पहले . में डाल देता अंकुश। (ए वैश्विक पहले किसी भी परीक्षण फ़ाइल में प्रदर्शित होने वाले हुक को किसी भी परीक्षण से पहले निष्पादित किया जाएगा, यहां तक ​​कि अन्य फ़ाइलों में दिखाई देने वाले परीक्षण भी। ) या मैं --delay का उपयोग करूंगा और स्पष्ट रूप से कॉल करें run() कनेक्शन की गारंटी के बाद सुइट शुरू करने के लिए।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. बीएसओएन टाइप ऑब्जेक्ट आईडी को जेएसओएन में कनवर्ट करना (मोंगोडब में भंडारण) -जावा

  2. नेवला के साथ आईडी द्वारा एक मोंगो उप-दस्तावेज़ का चयन कैसे करें?

  3. आप स्प्रिंग बूट के माध्यम से MongoDB में प्रारंभिक डेटा कैसे लोड कर सकते हैं?

  4. मॉड्यूल '../build/रिलीज/बीसन'] कोड नहीं मिला:'MODULE_NOT_FOUND'} js-bson:शुद्ध JS संस्करण का उपयोग करके c++ bson एक्सटेंशन लोड करने में विफल

  5. Mongoosejs दस्तावेज़ को ताज़ा करता है