2015-01-03 3 views
5

कोई विफल होने पर परीक्षण सूट जारी रखने का कोई तरीका है? उदाहरण द्वारा:कैस्परजेएस में कोई दावा विफल होने पर परीक्षण केस कैसे जारी रखें?

casper.test.begin("",3,function suite(){ 
    casper.start(url).then(function(){ 
    test.assert(...); 
    test.assert(...); //If this assert fail, the script stop and the third assert isn't tested 
    test.assert(...); 
    }).run(function(){ 
    test.done(); 
    }); 
}); 

मैं सभी ज़ोर चाहते परीक्षण कर रहे हैं, भले ही कुछ असफल। क्या यह संभव है?

+0

इकाई इस व्यवहार के परीक्षण के लिए आप क्या आम तौर पर नहीं देखना चाहेंगे। आप "सत्यापन" दृष्टिकोण का उपयोग कर सकते हैं, जो जांचता है लेकिन परीक्षण निष्पादन को रोकता नहीं है (जैसा कि नीचे दिए गए उत्तर में सुझाया गया है)। इस स्थिति को आपके जैसा आमतौर पर खराब परीक्षण डिजाइन के बारे में संकेत बताते हैं। एक परीक्षण में बहुत अधिक परीक्षण। समाधान इसे अलग परीक्षणों में विभाजित किया जाएगा। – buxter

उत्तर

6

casperjs google group post में देखें। हम casper.then(..

साथ ज़ोर घेर कर सकते हैं यह अनुवर्ती कोड काम करता है जैसे मैं चाहता हूँ (लेकिन इस तरह से हो सकता है सबसे अच्छा नहीं है?)

casper.test.begin("",3,function suite(){ 
    casper.start(url).then(function(){ 
    casper.then(function(){ 
     test.assert(...); //if fail, this suite test continue 
    }); 
    casper.then(function(){ 
     test.assert(...); //so if assert(1) fail, this assert is executed 
    }); 
    casper.then(function(){ 
     test.assert(...); 
    }); 
    }).run(function(){ 
     test.done(); 
    }); 
}); 
+0

कुछ परीक्षणों के लिए यह डैरेन के सुझाव से भी बदतर है, लेकिन जब आप अपनी वेबसाइट के परीक्षण के लिए कैस्परजेएस के शीर्ष पर एक ढांचा बनाते हैं, तो यह शायद एक क्लीनर दृष्टिकोण है। –

4

यह सामान्य रूप से आप चाहते हैं जब इकाई परीक्षण: यदि यह किसी भी तरह विफल होने जा रहा है, तो इसे जल्दी करें। अर्थात। प्रत्येक परीक्षण समारोह में पहली समस्या में विफल। इसके अलावा, बाद में परीक्षण आमतौर पर पहले परीक्षण पास मानते हैं, उदाहरण के लिए यदि पृष्ठ का शीर्षक गलत है और 404 कह रहा है, तो कोई बिंदु परीक्षण नहीं है कि छवियों की सही संख्या पृष्ठ पर है।

var title = this.getTitle(); 
var linkText = this.getHTML('a#testLink'); 
this.assert(title == "MyPage" && linkText == "continue", 
    "title=" + title + ";a#testLink = " + linkText); 

लेकिन उस:

मैं आप इस चाहते हैं, ताकि आप परीक्षण के परिणाम में अधिक जानकारी के लिए, और एक तरह से करने के लिए है कि एक ही ज़ोर और एक कस्टम त्रुटि संदेश का उपयोग किया जाएगा प्राप्त कर सकते हैं अनुमान लगा रहा हूँ गन्दा हो सकता है आप कार्यों की assert परिवार के सभी शक्ति का उपयोग करने, और नहीं उन्हें फेंक है, लेकिन इसके बजाय जारी रखने के लिए चाहते हैं, the source code के एक अध्ययन से पता चलता है कि इस काम हो सकता है:

test.assert(false, null, {doThrow:false}); 
test.assertEquals(1 == 2, null, {doThrow:false}); 
test.assertEquals(2 == 2); 

और यह होने के लिए अगर आप चाहते हैं आपके सभी आवेषणों पर डिफ़ॉल्ट व्यवहार, ठीक है, कोड हैकिंग सबसे अच्छा विकल्प हो सकता है! (के के लिए false के लिए के लिए डिफ़ॉल्ट बदलें।)

+0

मुझे बस एक और समाधान मिल गया है =) मैं यह – user2137454

+0

लिखता हूं हाँ, यह एक और तरीका है, अच्छा खोज। –

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