2014-09-03 23 views
6

में चलने वाले जैस्मीन 2.0 में परीक्षण के मामले समानांतर में चल रहे जैस्मीन 2.0 में परीक्षण हैं? मेरे अनुभव में वे लेख नहीं हैं, Jasmine.js: Race Conditions when using "runs" द्वारा संदर्भित आलेख से पता चलता है कि जैस्मीन उन्हें समानांतर में चलाता है इसलिए मुझे आश्चर्य हुआ कि क्या मैं अपने परीक्षण गलत तरीके से लिख रहा था।समानांतर

यहां परीक्षणों का एक सेट है जिसे मैं 4 सेकंड के बजाय 1 सेकंड में निष्पादित करने की अपेक्षा करता हूं।

describe("first suite", function() { 
    it("first test", function(done) { 
    expect(true).toBeTruthy(); 
    setTimeout(done, 1000); 
    }); 

    it("second test", function(done) { 
    expect(true).toBeTruthy(); 
    setTimeout(done, 1000); 
    }); 
}); 

describe("second suite", function() { 
    it("first test", function(done) { 
    expect(true).toBeTruthy(); 
    setTimeout(done, 1000); 
    }); 

    it("second test", function(done) { 
    expect(true).toBeTruthy(); 
    setTimeout(done, 1000); 
    }); 
}); 

क्या मुझे कुछ याद आ रही है?

jsFiddle

+0

हो सकता है कि आप [इस चर्चा] को पढ़ना चाहें (http://stackoverflow.com/questions/2734025/is-javascript-guaranteed-to-be-single-threaded)। मैं बस क्रोम में jsFiddle भाग गया, और यह "4.012s में समाप्त हुआ"। यह किस ब्राउज़र पर निर्भर करता है और जेएस कैसे लागू किया जाता है। – zerodiff

+0

कोई कारण नहीं है कि जैस्मीन समानांतर में एसिंक परीक्षण नहीं चला सकता है और सिंगल थ्रेडेड रहता है। यहां एक [fsFiddle] (http://jsfiddle.net/dspigarelliMNDNT/vr5Larxx/) है जो सिद्धांत में दिख सकता है। – Spig

उत्तर

8

जैस्मीन वास्तव में किसी भी तरह से समानांतर में अपने चश्मा नहीं चलता है। हालांकि चश्मे रखना संभव है जिनके एसिंक्रोनस हिस्से में काफी समय लगता है कि अंतर्निहित समय सीमा समाप्त हो जाती है जिससे जैस्मीन अगले spec को चलाने शुरू कर देगा, भले ही पहले चश्मे से कोड चल रहा हो।

2

यदि आप समानांतर में अपना परीक्षण चलाने के लिए चाहते हैं और आप परीक्षण लॉन्चर के रूप में कर्म का उपयोग कर रहे हैं, तो आप कई परीक्षण उदाहरणों में अपने परीक्षणों को विभाजित करने के लिए karma-parallel का उपयोग कर सकते हैं। यह अलग ब्राउज़र मामलों में चश्मा चलाता है और स्थापित करने के लिए बहुत ही सरल और आसान है:

npm i karma-parallel 

और फिर karma.conf.js में चौखटे सूची में 'समानांतर' जोड़ने

module.exports = function(config) { 
    config.set({ 
    frameworks: ['parallel', 'jasmine'] 
    }); 
}; 

karma-parallel

प्रकटीकरण: मैं लेखक