2013-02-21 24 views
9

मैंने हाल ही में अपनी जावास्क्रिप्ट को यूनिट परीक्षण करने के लिए QUNit का उपयोग करना शुरू कर दिया है और मैं वहां एक फीचर द्वारा थोड़ा उलझन में हूं: expect()मैं कभी भी उम्मीद का उपयोग क्यों करूंगा() Qunit के साथ टेस्ट लिखते समय?

डॉक्स के अनुसार, expect() डिज़ाइन किया गया है करने के लिए:

[एस] pecify कितने दावे एक परीक्षण में चलने की संभावना है।

और यहाँ उदाहरण वे दे दिया गया है:

test("a test", function() { 
    expect(2); 

    function calc(x, operation) { 
    return operation(x); 
    } 

    var result = calc(2, function(x) { 
    ok(true, "calc() calls operation function"); 
    return x * x; 
    }); 

    equal(result, 4, "2 square equals 4"); 
}); 

केवल एक चीज मैं यहाँ देख रखरखाव बुरा सपना है। प्रत्येक बार जब आप किसी परीक्षण में दावा जोड़ते हैं, तो आपको उस नंबर को अपडेट करना होगा या परीक्षण विफल हो जाएगा। क्या इस तरह की सुविधा के लिए कोई व्यावहारिक अनुप्रयोग है?

+1

किसी ऐसे व्यक्ति से पूर्ण अनुमान जो क्वीनिट के बारे में बगजर जानता है: इसे अनंत लूप के खिलाफ गार्ड के रूप में उपयोग किया जा सकता है। ऐसा लगता है कि न्यूनतम सीमा लागू नहीं होती है, कम से कम नहीं, इसलिए आप 'उम्मीद (100) '(या समान) का उपयोग कर सकते हैं और यह ठीक होना चाहिए। –

+1

यह गलत है, यह न तो न्यूनतम या अधिकतम है, यह आपके द्वारा अपेक्षित अनुमानों की सटीक मात्रा को परिभाषित करता है। यदि संख्या उत्थान से नीचे या उससे ऊपर है, तो परीक्षण विफल हो जाएगा। – Odi

उत्तर

10

केवल एक चीज जो मैं यहां देखता हूं रखरखाव दुःस्वप्न है ... क्या इस तरह की सुविधा के लिए कोई व्यावहारिक अनुप्रयोग है?

ठीक है, जिस तरह से मुझे लगता है कि expect का उपयोग करने के लिए अर्थपूर्ण कार्यों को समूहीकृत किया गया है। यह परीक्षण घटनाओं या कॉलबैक के लिए उपयोगी है, उदाहरण के लिए:

test('trigger an event', function() { 
    expect(1); 

    $('div') 
    .on('click', function() { ok(1) }); 
    .trigger('click'); 
}); 

यह एक बुरा सपना नहीं बन जाता है, तो आप छोटे परीक्षण, जहां केवल 2 या 3 दावे उम्मीद कर रहे हैं में वर्गीकृत किया सार्थक कार्यों रहते हैं।

+3

थोड़ा विस्तार करने के लिए, जब आप एसिंक्रोनस कोड का परीक्षण कर रहे हैं, तो एसिंक घटना नहीं होगी और आपका परीक्षण नहीं चलेगा। उस स्थिति में, आप एक विफलता चाहते हैं, चुपचाप छोड़ दिया परीक्षण नहीं। – adamesque

3

इसका उपयोग यह सुनिश्चित करने के लिए एक सुरक्षा के रूप में किया जा सकता है कि आपने किसी भी तरह से परीक्षण नहीं लिखा है जिसे चलाया नहीं जा सकता है। यदि आप अपेक्षित परीक्षणों की संख्या लिखने की आदत में आते हैं, तो क्या आपने कभी किसी टेस्ट सूट को लिखना चाहिए जहां किसी कारण से QUNit से एक परीक्षण छिपा हुआ है, तो क्विनीट इससे पहले कि आप इसे उठाएंगे।