2012-10-23 30 views
7

मैं अभी QUNit का उपयोग करना शुरू कर रहा हूं और समस्याएं हैं।QUNIT टेस्ट नहीं चलाएगा

मैं वर्तमान में टाइपस्क्रिप्ट का उपयोग कर रहा हूं, जो एक जावास्क्रिप्ट कंपाइलर है। मेरे पास कक्षाओं में मेरे टेस्ट हैं जो मेरे मुख्य वर्गों की संरचना के समानांतर हैं।

उन वर्गों में से प्रत्येक में मेरे पास runTests() नामक एक फ़ंक्शन है।

इन परीक्षणों को निष्पादित करने के लिए, मैं "टेस्ट" में समाप्त होने वाली सभी कक्षाओं को लूप करता हूं और फिर अपने रनटेस्ट() फ़ंक्शन को कॉल करता हूं।

runTests का एक उदाहरण() फ़ंक्शन है:

runTests = function() { 
    QUnit.test("5 = 5", function() { 
    QUnit.ok(5 == 5, "okay"); 
    }); 
} 

मैं) runTests के सभी (काम जानते हैं (में के रूप में वे कहते हैं, सांत्वना उत्पादन की वजह से इस बात की पुष्टि), लेकिन ज्यादा से ज्यादा यह केवल कभी मुझे एक परीक्षण दिखाता है। यह हमेशा अंतिम परीक्षण होता है (यहां तक ​​कि एक ही रनटेस्ट() में कई परीक्षणों के साथ)।

क्या कुछ अजीब चीज है जहां क्विनेट खुद को रीसेट करता है, यही कारण है कि मैं केवल एक देख रहा हूं, या क्या मुझे कुछ और मौलिक याद आ रहा है?

धन्यवाद।


एचटीएमएल का उपयोग मैं यहाँ है, के मामले में यह मायने रखती है:

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <title>QUnit Example</title> 
    <link rel="stylesheet" href="qunit-git.css"> 
</head> 
<body> 
<div id="qunit"></div> 
<script src="qunit-1.10.0.js"></script> 
<script src="mycode.js"></script> 
<script type="text/javascript"> 
    function runTest() { 
     var testClasses = getClassesRecurse(Test, []); 

     function getClassesRecurse(target, testClasses) { 
      if (typeof target == 'function' && /Test$/.test(target.name)) { 
       testClasses.push(target); 
      } else if (typeof target == 'object') { 
       for (var i in target) { 
        getClassesRecurse(target[i], testClasses); 
       } 
      } 

      return testClasses; 
     } 

     for (var i in testClasses) { 
      var testObj = new testClasses[i](); 

      if (testObj.runTests) { 
       console.log('Testing: ' + testClasses[i].name, testObj); 
       testObj.runTests(); 
      } 
     } 
    } 

    runTest(); 
</script> 
</body> 
</html> 
+0

jsfiddle, कृपया। – c69

उत्तर

16

तो, मेरे अपने सवाल का जवाब देने: ऐसा लगता है कि मैं "फिर से दौड़ना" एक परीक्षण पर मारा था और यह दिखाया जा रहा था मैं सिर्फ एक परीक्षण। क्वेरी स्ट्रिंग को हटा रहा था और सबकुछ अच्छा था।

QUnit के लिए एक सुझाव: एक बड़े फ़ॉन्ट में एक संदेश जोड़ें: "केवल एक परीक्षण चला रहा है, सभी को चलाने के लिए यहां क्लिक करें।" = पी