2015-10-22 5 views
9

मैं एक वास्तविक स्ट्रिंग एक उम्मीद regex से मेल खाता है, तो QUnit की जाँच करने के लिए एक कस्टम assert समारोह लिखना चाहते हैं।QUnit.push का उपयोग किए बिना QUnit के लिए नए दावे कार्यों को कैसे लिखें?

QUnit.extend(QUnit.assert, { 
    matches: function (actual, regex, message) { 
     var success = !!regex && !!actual && (new RegExp(regex)).test(actual); 
     var expected = "String matching /" + regex.toString() + "/"; 
     QUnit.push(success, actual, expected, message); 
    } 
}); 

QUnit.test("New assertion smoke test", function (assert) { 
    // force a failure to see the new assert work properly: 
    assert.matches("flower", "gibberish"); 
}); 

यह आउटपुट:

संदेश: अपेक्षित: "स्ट्रिंग मिलान/निरर्थक शब्द /", वास्तविक: "फूल"

this question की मदद से मैं पहली बार एक मूल संस्करण है कि उम्मीद के रूप में काम करता है लिखा था

बढ़िया!

हालांकि, इसे लिखते समय मैंने the QUnit.extend docs और the QUnit.push docs दोनों की जांच की। हालांकि, बाद कहा गया है कि:

इस विधि बहिष्कृत हो गई है और यह दावा संदर्भ में इसके प्रत्यक्ष संदर्भ के माध्यम से इसका इस्तेमाल करने की अनुशंसा की जाती है।

लेकिन मैं यह देखने के लिए कि कैसे मैं QUnit.extend संदर्भ के अंदर यह सलाह लागू कर सकते हैं असफल।

मैं एक कस्टम दावे को सही तरीके से कैसे लिखूं जो बहिष्कृत QUnit.push फ़ंक्शन का उपयोग नहीं करता है? this documentation link देखें:

+0

यह नहीं है: https://api.qunitjs.com/push/ आप किसके बाद देख रहे हैं? नीचे – sirrocco

+0

@ सिरोक्रो हां पर एक उदाहरण है, यह वास्तव में ऐसा लगता है। इसे सुनिश्चित करने के लिए इसे जाना होगा। यदि ऐसा है, तो मुझे शायद क्विनीट के दस्तावेज़ों को ठीक करने का भी सुझाव देना चाहिए, अगर आपके द्वारा सुझाए गए नए 'पुश' आलेख (जिसे मैं अपने प्रश्न में लिंक करता हूं) से लिंक किया गया तो अच्छा होगा। – Jeroen

+0

@sirrocco मैं आपके सुझाव की कोशिश करने के लिए चारों ओर मिल गया, और यह काम करता है: धन्यवाद! यदि आप चाहते हैं कि आप मेरा जवाब डुप्लिकेट कर सकें, और मैं अपना खुद का हटा दूंगा और आपको अच्छी तरह से योग्य बक्षीस प्रदान करूंगा। – Jeroen

उत्तर

2

एक टिप्पणी में @sirrocco ने सुझाव दिया, वहाँ एक अलगpush विधि दस्तावेज़ है कि आप इस के लिए उपयोग करना चाहिए है। इसका मतलब यह है आपका जवाब के रूप में सरल रूप में कोड की एक पंक्ति को बदलने Qunit.push के बजाय this.push उपयोग करने के लिए है:

this.push(success, actual, expected, message); 

यहाँ एक पूर्ण काम कर उदाहरण है:

QUnit.extend(QUnit.assert, { 
 
    matches: function (actual, regex, message) { 
 
     var success = !!regex && !!actual && (new RegExp(regex)).test(actual); 
 
     var expected = "String matching /" + regex.toString() + "/"; 
 
     this.push(success, actual, expected, message); 
 
    } 
 
}); 
 

 
QUnit.test("New assertion smoke test", function (assert) { 
 
    // force a failure to see the new assert work properly: 
 
    assert.matches("flower", /.*our.*/, "Wanted regex to match!"); 
 
});
<script src="https://code.jquery.com/qunit/qunit-1.20.0.js"></script> 
 
<link href="https://code.jquery.com/qunit/qunit-1.20.0.css" rel="stylesheet"/> 
 
<div id="qunit"></div>

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