जवाबों:
assert
जावास्क्रिप्ट में कोई नहीं है (फिर भी , इसमें एक जोड़ने की बात है , लेकिन यह एक प्रारंभिक चरण में है)। शायद आप कुछ पुस्तकालय का उपयोग कर रहे हैं जो एक प्रदान करता है। सामान्य अर्थ त्रुटि को फेंकना है यदि फ़ंक्शन में पारित अभिव्यक्ति झूठी है; यह मुखर जाँच की सामान्य अवधारणा का हिस्सा है । आमतौर पर दावे (जैसा कि उन्हें कहा जाता है) का उपयोग केवल "परीक्षण" या "डिबग" में किया जाता है, निर्माण कोड से बाहर निकलता है और छीन लिया जाता है।
मान लीजिए कि आपके पास एक फ़ंक्शन था जिसे हमेशा एक स्ट्रिंग को स्वीकार करना चाहिए था । आप जानना चाहते हैं कि क्या किसी ने उस फ़ंक्शन को उस चीज के साथ बुलाया जो स्ट्रिंग नहीं था। तो आप ऐसा कर सकते हैं:
assert(typeof argumentName === "string");
... assert
अगर हालत झूठी थी तो एक त्रुटि कहाँ फेंक देंगे।
एक बहुत ही सरल संस्करण इस तरह दिखेगा:
function assert(condition, message) {
if (!condition) {
throw message || "Assertion failed";
}
}
Error
यदि जावास्क्रिप्ट इंजन इसका समर्थन करता है (वास्तव में पुराने नहीं हो सकता है), जिसका स्टैक ट्रेस एकत्रित करने का लाभ होता है और जैसे: वस्तु का बेहतर उपयोग करना
function assert(condition, message) {
if (!condition) {
message = message || "Assertion failed";
if (typeof Error !== "undefined") {
throw new Error(message);
}
throw message; // Fallback
}
}
यहां तक कि IE8 में Error
(हालांकि इसके पास stack
संपत्ति नहीं है , लेकिन आधुनिक इंजन [आधुनिक IE सहित] करते हैं)।
if(!condition)
सेटिंग है, var throwError=true;
फिर debugger;
एक में फेंक अनुभाग लपेटें if(throwError)
। इस तरह, अगर मेरे पास डिबगर खुला है, तो यह टूट जाएगा, और अगर मेरी इच्छा है तो मैं throwError
झूठ बोल सकता हूं और फिर बाहर निकलते समय सभी स्कोप की जांच कर सकता हूं ।
throw
। इस तरह आपको debugger;
कथन की आवश्यकता नहीं है । अधिक के लिए developer.chrome.com/devtools/docs/… देखें ।
if
एक सशर्त ऑपरेटर के लिए कारोबार किया है। वैसे भी, आज की दुनिया में, मैं उन इंजनों का समर्थन करने की जहमत नहीं उठाऊंगा जो नहीं हैं Error
।
यदि एक आधुनिक ब्राउज़र या नोडज का उपयोग कर रहे हैं, तो आप उपयोग कर सकते हैं console.assert(expression, object)
।
अधिक जानकारी के लिए:
console.error
कि कोड निष्पादित करना जारी रखता है।
console.assert
यह तब तक अच्छा नहीं है जब तक कि इसके समान व्यवहार न हो throw
।
console.assert
भी जारी है क्योंकि दावे त्रुटि से निपटने के कार्य नहीं हैं। वे केवल विकास के दौरान कोड शुद्धता की जाँच के लिए डिज़ाइन किए गए हैं। परंपरागत रूप से वे उत्पादन वातावरण में पूरी तरह से अक्षम हो जाते हैं ताकि कुछ तुच्छ होने के कारण लाइव सिस्टम समाप्त न हो। ब्राउज़र को उत्पादन वातावरण माना जाता है, इसलिए console.assert
वहां निष्पादन समाप्त नहीं करता है। यदि आप निष्पादन को रोकने के लिए दावे पर भरोसा कर रहे हैं, तो आपको इसके बजाय उचित त्रुटि हैंडलिंग का उपयोग करना चाहिए, क्योंकि यह वह नहीं है जिसके लिए दावे किए जाते हैं।
अन्य उत्तर अच्छे हैं: ECMAScript5 (जैसे जावास्क्रिप्ट जो मूल रूप से हर जगह काम करता है) में निर्मित एक मुखर फ़ंक्शन नहीं है, लेकिन कुछ ब्राउज़र इसे आपको देते हैं या इसमें ऐड-ऑन होते हैं जो कि कार्यक्षमता प्रदान करते हैं। हालांकि शैक्षणिक उद्देश्यों के लिए एक "गरीब आदमी के जोर" समारोह के लिए यह एक अच्छी तरह से स्थापित / लोकप्रिय / बनाए रखा पुस्तकालय का उपयोग करना सबसे अच्छा है, कुछ इस तरह दिख सकता है:
const assert = function(condition, message) {
if (!condition)
throw Error('Assert failed: ' + (message || ''));
};
assert(1 === 1); // Executes without problem
assert(false, 'Expected true');
// Yields 'Error: Assert failed: Expected true' in console
try
, catch
, throw
)
assert()
एक देशी जावास्क्रिप्ट फ़ंक्शन नहीं है। यह एक कस्टम फंक्शन है जिसे किसी ने बनाया है। आपको इसे अपने पेज पर या अपनी फ़ाइलों में देखना होगा और किसी को भी यह निर्धारित करने में मदद करने के लिए पोस्ट करना होगा कि यह क्या कर रहा है।
यह जावास्क्रिप्ट का परीक्षण करने के लिए है। आश्चर्यजनक रूप से, मुश्किल से पाँच या छः पंक्तियों में, यह कोड परीक्षण करते समय आपके कोड पर बहुत अधिक शक्ति और नियंत्रण प्रदान करता है।
मुखर फ़ंक्शन दो मापदंडों को स्वीकार करता है:
परिणाम: एक बूलियन, जो संदर्भ देता है कि आपका परीक्षण पास हुआ या असफल
विवरण: आपके परीक्षण का संक्षिप्त विवरण।
मुखर फ़ंक्शन तब बस एक सूची आइटम बनाता है, या तो "पास" या "असफल" की एक कक्षा लागू करता है, इस बात पर निर्भर करता है कि आपका परीक्षण सही है या गलत, और फिर सूची आइटम के विवरण को जोड़ देता है। अंत में, कोड के उस ब्लॉक को पेज में जोड़ा जाता है। यह सरल है, लेकिन पूरी तरह से काम करता है।
यहाँ एक मुखर फ़ंक्शन का वास्तव में सरल कार्यान्वयन है। यह एक मूल्य और जो आप परीक्षण कर रहे हैं उसका विवरण लेता है।
function assert(value, description) {
var result = value ? "pass" : "fail";
console.log(result + ' - ' + description);
};
यदि मान सत्य का मूल्यांकन करता है तो यह गुजरता है।
assert (1===1, 'testing if 1=1');
यदि यह गलत है तो यह विफल हो जाता है।
assert (1===2, 'testing if 1=1');
यदि दावा गलत है, तो संदेश प्रदर्शित होता है। विशेष रूप से, यदि पहला तर्क गलत है, तो दूसरा तर्क (स्ट्रिंग संदेश) डेवलपर टूल कंसोल में लॉग इन किया जाएगा। यदि पहला तर्क सत्य है, तो मूल रूप से कुछ भी नहीं होता है। एक सरल उदाहरण - मैं Google डेवलपर टूल का उपयोग कर रहा हूं:
var isTrue = true;
var isFalse = false;
console.assert(isTrue, 'Equals true so will NOT log to the console.');
console.assert(isFalse, 'Equals false so WILL log to the console.');
यह शायद एक परीक्षण पुस्तकालय के साथ आया था जो आपके कुछ कोड का उपयोग कर रहा है। यहां एक उदाहरण दिया गया है (संभावना है कि यह वही लाइब्रेरी नहीं है जैसा आपका कोड उपयोग कर रहा है, लेकिन यह सामान्य विचार दिखाता है):
शब्द या फ़ंक्शन "मुखर" का उपयोग ज्यादातर आवेदन के कुछ हिस्सों के परीक्षण में किया जाता है।
Assert फ़ंक्शन स्थिति की जांच करने के लिए प्रोग्राम को निर्देश देने का एक छोटा तरीका है (जिसे "अभिकथन" भी कहा जाता है) और यदि स्थिति सही नहीं है, तो यह त्रुटि फेंक देगा।
तो आइए देखें कि यह "सामान्य कोड" में कैसा दिखेगा
if (typeof "string" === "array") {
throw Error('Error: "string" !== "array"');
}
साथ assert
आप बस लिख सकते हैं:
assert(typeof "string" === "array")
जावास्क्रिप्ट में, कोई मूल नहीं है assert
कार्य , इसलिए आपको कुछ लाइब्रेरी से एक का उपयोग करना होगा।
सरल परिचय के लिए, आप इस लेख को देख सकते हैं:
http://fredkschott.com/post/2014/05/nodejs-testing-essentials/
मुझे उम्मीद है यह मदद करेगा।
यदि पहला गुण गलत है, और दूसरा गुण फेंक दिया जाने वाला संदेश है, तो जोर त्रुटि संदेश देता है।
console.assert(condition,message);
कई टिप्पणियां कहती हैं कि अभिकथन जावास्क्रिप्ट में मौजूद नहीं है, लेकिन जावास्क्रिप्ट console.assert()
में मुखर कार्य होता है अभिकथन का विचार यह है कि बग क्यों / जहां पाया जाता है।
console.assert(document.getElementById("title"), "You have no element with ID 'title'");
console.assert(document.getElementById("image"), "You have no element with ID 'image'");
यहां संदेश के आधार पर आप पा सकते हैं कि बग क्या है। इन त्रुटि संदेशों को लाल रंग में सांत्वना देने के लिए प्रदर्शित किया जाएगा जैसे कि हमने console.error();
सांत्वना निष्पादन में अधिक कार्य देखने के लिए कहा थाconsole.log(console);
पिछले उत्तर प्रदर्शन और संगतता के संदर्भ में सुधारा जा सकता है।
यदि वस्तु मौजूद है तो एक बार जाँच करें Error
, अगर यह घोषित नहीं किया गया है:
if (typeof Error === "undefined") {
Error = function(message) {
this.message = message;
};
Error.prototype.message = "";
}
फिर, प्रत्येक जोर स्थिति की जांच करेगा, और हमेशा एक Error
वस्तु फेंक देगा
function assert(condition, message) {
if (!condition) throw new Error(message || "Assertion failed");
}
ध्यान रखें कि कंसोल वास्तविक त्रुटि रेखा संख्या प्रदर्शित नहीं करेगा, लेकिन assert
फ़ंक्शन की रेखा , जो डीबगिंग के लिए उपयोगी नहीं है।
यदि आप वेबपैक का उपयोग करते हैं, तो आप केवल नोड.जेएस मुखर पुस्तकालय का उपयोग कर सकते हैं । हालांकि वे दावा करते हैं कि यह "एक सामान्य उद्देश्य के पुस्तकालय होने का इरादा नहीं है", यह तदर्थ कथनों के लिए ठीक से अधिक प्रतीत होता है, और ऐसा लगता है कि कोई भी प्रतियोगी नोड अंतरिक्ष में वैसे भी मौजूद नहीं है (चाई यूनिट परीक्षण के लिए डिज़ाइन किया गया है)।
const assert = require('assert');
...
assert(jqXHR.status == 201, "create response should be 201");
आपको इसका उपयोग करने में सक्षम होने के लिए वेबपैक या ब्राउज़राइज़ का उपयोग करने की आवश्यकता है, तो जाहिर है कि यह केवल तभी उपयोगी है जब वे आपके वर्कफ़्लो में पहले से मौजूद हों।
कंसोल.स्सर्ट या अपने खुद के रोल करने जैसे अन्य विकल्पों के अलावा , आप इनवेरिएंट का उपयोग कर सकते हैं । इसमें कुछ विशिष्ट विशेषताएं हैं:
%s
विशेष का उपयोग करके ) का समर्थन करता है ।जैसा कि TJ द्वारा बताया गया है, assert
जावास्क्रिप्ट में कोई भी नहीं है। हालांकि, एक नोड मॉड्यूल है जिसका नाम मुखर है , जिसका उपयोग ज्यादातर परीक्षण के लिए किया जाता है । तो, आप कोड देख सकते हैं जैसे:
const assert = require('assert');
assert(5 > 7);
assert
।