2013-11-27 5 views
7

मोचा जावास्क्रिप्ट परीक्षण ढांचे का उपयोग करके, मैं पहले से परिभाषित परीक्षण पास होने के बाद केवल कई परीक्षण (सभी एसिंक्रोनस) निष्पादित करने में सक्षम होना चाहता हूं।पूर्व एसिंक्रोनस परीक्षण पास होने के बाद ही मैं मोचा परीक्षण कैसे चला सकता हूं?

मैं इन परीक्षणों को एक दूसरे के भीतर घोंसला नहीं करना चाहता हूं।

describe("BBController", function() { 
    it("should save", function(done) {}); 
    it("should delete", function(done) {}); 
}) 

उत्तर

-4

यदि आपके परीक्षण ठीक तरह से स्थापित कर रहे हैं, केवल व्यापार तर्क का एक छोटा सा टुकड़ा परीक्षण तो आप अपने परीक्षण एसिंक्रोनस रूप से चला सकते हैं, लेकिन वे अन्य परीक्षण धारण नहीं करना चाहिए।

describe("BBController", function() { 
    it("should save", function(done) { 
     // handle logic 
     // handle assertion or other test 
     done(); //let mocha know test is complete - results are added to test list 
    }); 
    it("should delete", function(done) { 
     // handle logic 
     // handle assertion or other test 
     done(); //let mocha know test is complete - results are added to test list 
    }); 
}); 

फिर से, कोई परीक्षण यदि आप इस समस्या है तो आप तरीके impove करने पर गौर करना चाहिए, पारित करने के लिए चलाने के लिए एक और परीक्षण के लिए प्रतीक्षा करने की आवश्यकता चाहिए: जिस तरह से पूरा करने के लिए एक परीक्षण पाने के लिए निम्न करने के लिए है आपकी निर्भरता इंजेक्शन या पहले से विधि

+1

आप बस इतना कह रहे हैं कि परीक्षणों को संरचित नहीं किया जाना चाहिए जैसा कि मैंने पूछा था, जो सवाल का जवाब नहीं देता है। साथ ही, आपका कोड बस कॉल किया जाता है() जो कि मैं पूछ रहा था किसी भी तरह की निर्भरता को स्थापित करने के लिए प्रासंगिक नहीं है। मुझे लगता है कि आप वास्तव में क्या कहना चाहते हैं कि मोचा इस निर्भरता के इस रूप का समर्थन नहीं करता है। –

+0

किसी भी तरह से प्रश्न का उत्तर नहीं देता ... जैसा कि टिम ने कहा था। हो गया इस सवाल के लिए प्रासंगिक नहीं है। – mbochynski

+0

उत्तर बताता है कि परीक्षण सही तरीके से सेट नहीं किए गए हैं, किसी परीक्षण को वैध होने के लिए चल रहे किसी अन्य परीक्षण पर कभी भी निर्भर नहीं होना चाहिए। परीक्षण को चलाने के लिए किसी भी सेटअप को पहले ब्लॉक में चलाया जाना चाहिए, वास्तव में, यह सुनिश्चित करने के लिए यादृच्छिक क्रम में अपने परीक्षण चलाने के लिए एक अच्छा अभ्यास है कि आपके पास – kkemple

2

--bail विकल्प का उपयोग करें। सुनिश्चित करें कि आप कम से कम मोचा 0.14.0 का उपयोग कर रहे हैं। (मैंने सफलता के बिना पुराने संस्करणों के साथ इसे आजमाया है।)

सबसे पहले, मोचा के लिए केवल एक के बाद परीक्षण समाप्त करने के लिए आपको कुछ भी करने की ज़रूरत नहीं है। इस तरह मोचा डिफ़ॉल्ट रूप से काम करता है। test.js को यह बचाओ:

describe("test", function() { 
    this.timeout(5 * 1000); // Tests time out in 5 seconds. 

    it("first", function (done) { 
     console.log("first: do nothing"); 
     done(); 
    }); 

    it("second", function (done) { 
     console.log("second is executing"); 
     // This test will take 2.5 seconds. 
     setTimeout(function() { 
      done(); 
     }, 2.5 * 1000); 
    }); 

    it("third", function (done) { 
     console.log("third is executing"); 
     // This test will time out. 
    }); 

    it("fourth", function (done) { 
     console.log("fourth: do nothing"); 
     done(); 
    }); 
}); 

फिर से यह निष्पादित करें:

  1. पहले और दूसरे परीक्षण पूरा कर लें:

    mocha -R spec test.js 
    

    आप चौथा परीक्षण प्रारंभ होने तक नहीं देख सकेंगे।

  2. तीसरे परीक्षण का समय समाप्त हो गया है।

अब, के साथ इसे चलाने:

mocha -R spec --bail test.js 

मोचा जैसे ही परीक्षण 3 में विफल रहता है बंद हो जाएगा।

संबंधित मुद्दे