Was assert
bedeutet in JavaScript?
Ich habe so etwas gesehen wie:
assert(function1() && function2() && function3(), "some text");
Und würde gerne wissen, was die Methode assert()
macht.
quelle
Was assert
bedeutet in JavaScript?
Ich habe so etwas gesehen wie:
assert(function1() && function2() && function3(), "some text");
Und würde gerne wissen, was die Methode assert()
macht.
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).
assert
.if(!condition)
Einstellung hinzugefügt habe, ist,var throwError=true;
danndebugger;
den Wurfabschnitt in ein zu verpackenif(throwError)
. Auf diese Weise wird der Debugger unterbrochen, wenn ich ihn geöffnet habe. Wenn ich dies wünsche, kann ichthrowError
auf false setzen und dann alle Bereiche untersuchen, während ich aussteige.throw
. Auf diese Weise brauchen Sie diedebugger;
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 habenError
.Wenn Sie einen modernen Browser oder NodeJS verwenden, können Sie verwenden
console.assert(expression, object)
.Für mehr Informationen:
quelle
console.error
, als würde der Code weiterhin ausgeführt.console.assert
ist nicht so gut, es sei denn, es hat das gleiche Verhalten wiethrow
.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 undconsole.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:
quelle
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.quelle
Ü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.
quelle
Hier ist eine wirklich einfache Implementierung einer Assert-Funktion. Es braucht einen Wert und eine Beschreibung dessen, was Sie testen.
Wenn der Wert true ergibt, wird er übergeben.
Wenn es false zurückgibt, schlägt es fehl.
quelle
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:
quelle
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):
http://chaijs.com/guide/styles/#assert
quelle
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.
quelle
Assertion löst eine Fehlermeldung aus, wenn das erste Attribut falsch ist, und das zweite Attribut ist die Nachricht, die ausgelöst werden soll.
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.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ühren
console.log(console);
quelle
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:Dann überprüft jede Behauptung die Bedingung und wirft immer ein
Error
ObjektBeachten Sie, dass die Konsole nicht die tatsächliche Fehlerzeilennummer anzeigt, sondern die Zeile der
assert
Funktion, die für das Debuggen nicht hilfreich ist.quelle
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).
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.
quelle
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).quelle
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:quelle