Antworten:
assert
In JavaScript gibt es noch kein (es ist die Rede davon, eines hinzuzufügen , aber es befindet sich in einem frühen Stadium). Vielleicht verwenden Sie eine Bibliothek, die eine bereitstellt. Die übliche Bedeutung ist, einen Fehler auszulösen, wenn der an die Funktion übergebene Ausdruck falsch ist. Dies ist Teil des allgemeinen Konzepts der Assertionsprüfung . Normalerweise werden Zusicherungen (wie sie genannt werden) nur beim "Testen" oder "Debuggen" von Builds verwendet und aus dem Produktionscode entfernt.
Angenommen, Sie hatten eine Funktion, die immer eine Zeichenfolge akzeptieren sollte. Sie möchten wissen, ob jemand diese Funktion mit etwas aufgerufen hat, das keine Zeichenfolge war. So könnten Sie tun:
assert(typeof argumentName === "string");
... wo assert
würde ein Fehler auslösen, wenn die Bedingung falsch wäre.
Eine sehr einfache Version würde so aussehen:
function assert(condition, message) {
if (!condition) {
throw message || "Assertion failed";
}
}
Besser noch, nutzen Sie das Error
Objekt, wenn die JavaScript-Engine es unterstützt (wirklich alte möglicherweise nicht), was den Vorteil hat, einen Stack-Trace zu sammeln und so weiter:
function assert(condition, message) {
if (!condition) {
message = message || "Assertion failed";
if (typeof Error !== "undefined") {
throw new Error(message);
}
throw message; // Fallback
}
}
Sogar IE8 hat Error
(obwohl es nicht die stack
Eigenschaft hat, aber moderne Motoren [einschließlich moderner IE] tun).
if(!condition)
Einstellung hinzugefügt habe, ist, var throwError=true;
dann debugger;
den Wurfabschnitt in ein zu verpacken if(throwError)
. Auf diese Weise wird der Debugger unterbrochen, wenn ich ihn geöffnet habe. Wenn ich dies wünsche, kann ich throwError
auf false setzen und dann alle Bereiche untersuchen, während ich aussteige.
throw
. Auf diese Weise brauchen Sie die debugger;
Aussage nicht. Weitere Informationen finden Sie unter developer.chrome.com/devtools/docs/… .
if
gegen einen bedingten Operator getauscht . In der heutigen Welt würde ich mir sowieso nicht die Mühe machen, Motoren zu unterstützen, die keine haben Error
.
Wenn Sie einen modernen Browser oder NodeJS verwenden, können Sie verwenden console.assert(expression, object)
.
Für mehr Informationen:
console.error
, als würde der Code weiterhin ausgeführt.
console.assert
ist nicht so gut, es sei denn, es hat das gleiche Verhalten wie throw
.
console.assert
liegt darin, dass Zusicherungen keine Fehlerbehandlungsfunktionen sind. Sie dienen nur zur Überprüfung der Codekorrektheit während der Entwicklung. Traditionell sind sie in Produktionsumgebungen vollständig deaktiviert, um zu vermeiden, dass Live-Systeme aufgrund von Kleinigkeiten beendet werden. Der Browser gilt als Produktionsumgebung und console.assert
beendet die Ausführung dort nicht. Wenn Sie sich auf Assertions verlassen, um die Ausführung zu stoppen, sollten Sie stattdessen die richtige Fehlerbehandlung verwenden, da dies nicht der Zweck von Assertions ist.
Die anderen Antworten sind gut: In ECMAScript5 ist keine Assert-Funktion integriert (z. B. JavaScript, das im Grunde überall funktioniert), aber einige Browser geben sie Ihnen oder verfügen über Add-Ons, die diese Funktionalität bereitstellen. Während es wahrscheinlich am besten ist, eine gut etablierte / beliebte / gepflegte Bibliothek dafür zu verwenden, könnte für akademische Zwecke eine Funktion "Behauptung eines armen Mannes" ungefähr so aussehen:
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()
ist keine native Javascript-Funktion. Es ist eine benutzerdefinierte Funktion, die jemand gemacht hat. Sie müssen es auf Ihrer Seite oder in Ihren Dateien suchen und für jedermann veröffentlichen, um festzustellen, was es tut.
Überprüfen Sie dies: http://net.tutsplus.com/tutorials/javascript-ajax/quick-tip-quick-and-easy-javascript-testing-with-assert/
Es dient zum Testen von JavaScript. Erstaunlicherweise bietet dieser Code mit knapp fünf oder sechs Zeilen beim Testen ein hohes Maß an Leistung und Kontrolle über Ihren Code.
Die Assert-Funktion akzeptiert zwei Parameter:
Ergebnis: Ein Boolescher Wert, der angibt, ob Ihr Test bestanden oder nicht bestanden wurde
Beschreibung: Eine kurze Beschreibung Ihres Tests.
Die Assert-Funktion erstellt dann einfach ein Listenelement, wendet eine Klasse von "Bestanden" oder "Nicht Bestanden" an, je nachdem, ob Ihr Test wahr oder falsch zurückgegeben hat, und hängt dann die Beschreibung an das Listenelement an. Schließlich wird dieser codierte Block zur Seite hinzugefügt. Es ist verrückt einfach, funktioniert aber perfekt.
Hier ist eine wirklich einfache Implementierung einer Assert-Funktion. Es braucht einen Wert und eine Beschreibung dessen, was Sie testen.
function assert(value, description) {
var result = value ? "pass" : "fail";
console.log(result + ' - ' + description);
};
Wenn der Wert true ergibt, wird er übergeben.
assert (1===1, 'testing if 1=1');
Wenn es false zurückgibt, schlägt es fehl.
assert (1===2, 'testing if 1=1');
Wenn die Behauptung falsch ist, wird die Nachricht angezeigt. Wenn das erste Argument falsch ist, wird das zweite Argument (die Zeichenfolgenmeldung) in der Entwickler-Tools-Konsole protokolliert. Wenn das erste Argument wahr ist, passiert im Grunde nichts. Ein einfaches Beispiel - Ich verwende Google Developer Tools:
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.');
Es wurde wahrscheinlich mit einer Testbibliothek geliefert, die ein Teil Ihres Codes verwendet. Hier ist ein Beispiel von einem (wahrscheinlich ist es nicht dieselbe Bibliothek, die Ihr Code verwendet, aber es zeigt die allgemeine Idee):
Das Wort oder die Funktion "assert" wird hauptsächlich zum Testen von Teilen der Anwendung verwendet.
Assert-Funktionen sind eine kurze Möglichkeit, das Programm anzuweisen, die Bedingung zu überprüfen (auch als "Assertion" bezeichnet). Wenn die Bedingung nicht True ist, wird ein Fehler ausgegeben.
Mal sehen, wie es im "normalen Code" aussehen würde
if (typeof "string" === "array") {
throw Error('Error: "string" !== "array"');
}
Mit können assert
Sie einfach schreiben:
assert(typeof "string" === "array")
In Javascript gibt es kein Muttersprachler assert
Funktion, daher müssen Sie eine aus einer Bibliothek verwenden.
Zur einfachen Einführung können Sie diesen Artikel lesen:
http://fredkschott.com/post/2014/05/nodejs-testing-essentials/
Ich hoffe, es hilft.
Assertion löst eine Fehlermeldung aus, wenn das erste Attribut falsch ist, und das zweite Attribut ist die Nachricht, die ausgelöst werden soll.
console.assert(condition,message);
Es gibt viele Kommentare, die besagen, dass Assertion nicht in JavaScript vorhanden ist, sondern console.assert()
die Assert-Funktion in JavaScript. Die Idee der Assertion besteht darin, herauszufinden, warum / wo der Fehler auftritt.
console.assert(document.getElementById("title"), "You have no element with ID 'title'");
console.assert(document.getElementById("image"), "You have no element with ID 'image'");
Hier finden Sie je nach Meldung den Fehler. Diese Fehlermeldungen werden der Konsole in roter Farbe angezeigt, als ob wir aufgerufen hätten, console.error();
um weitere Funktionen in der Konsole auszuführenconsole.log(console);
Frühere Antworten können hinsichtlich Leistung und Kompatibilität verbessert werden.
Überprüfen Sie einmal, ob das Error
Objekt vorhanden ist, und deklarieren Sie es, wenn nicht:
if (typeof Error === "undefined") {
Error = function(message) {
this.message = message;
};
Error.prototype.message = "";
}
Dann überprüft jede Behauptung die Bedingung und wirft immer ein Error
Objekt
function assert(condition, message) {
if (!condition) throw new Error(message || "Assertion failed");
}
Beachten Sie, dass die Konsole nicht die tatsächliche Fehlerzeilennummer anzeigt, sondern die Zeile der assert
Funktion, die für das Debuggen nicht hilfreich ist.
Wenn Sie das Webpack verwenden, können Sie einfach die Assertionsbibliothek node.js verwenden . Obwohl sie behaupten, dass es "nicht für eine Allzweck-Assertionsbibliothek gedacht ist", scheint es für Ad-hoc-Assertions mehr als in Ordnung zu sein, und es scheint sowieso keinen Konkurrenten im Node-Bereich zu geben (Chai ist für Unit-Tests konzipiert).
const assert = require('assert');
...
assert(jqXHR.status == 201, "create response should be 201");
Sie müssen Webpack oder browserify verwenden, um dies verwenden zu können. Dies ist also offensichtlich nur dann nützlich, wenn sich diese bereits in Ihrem Workflow befinden.
Zusätzlich zu anderen Optionen wie console.assert oder Rolling Your Own können Sie invariant verwenden . Es hat ein paar einzigartige Eigenschaften:
%s
Bezeichners).Wie von TJ erwähnt, gibt es assert
in JavaScript keine . Es gibt jedoch ein Knotenmodul namens assert , das hauptsächlich zum Testen verwendet wird . Möglicherweise sehen Sie Code wie:
const assert = require('assert');
assert(5 > 7);
assert
.