Que assert
signifie en JavaScript?
J'ai vu quelque chose comme:
assert(function1() && function2() && function3(), "some text");
Et je voudrais savoir ce que fait la méthode assert()
.
la source
Que assert
signifie en JavaScript?
J'ai vu quelque chose comme:
assert(function1() && function2() && function3(), "some text");
Et je voudrais savoir ce que fait la méthode assert()
.
Il n'y assert
en a pas en JavaScript (pour l'instant, il est question d'en ajouter un , mais c'est à un stade précoce). Vous utilisez peut-être une bibliothèque qui en fournit une. La signification habituelle est de renvoyer une erreur si l'expression passée dans la fonction est fausse; cela fait partie du concept général de vérification des assertions . Habituellement, les assertions (comme on les appelle) ne sont utilisées que dans les versions de «test» ou de «débogage» et supprimées du code de production.
Supposons que vous disposiez d'une fonction qui devait toujours accepter une chaîne. Vous voudriez savoir si quelqu'un a appelé cette fonction avec quelque chose qui n'était pas une chaîne. Vous pourriez donc faire:
assert(typeof argumentName === "string");
... où assert
jetterait une erreur si la condition était fausse.
Une version très simple ressemblerait à ceci:
function assert(condition, message) {
if (!condition) {
throw message || "Assertion failed";
}
}
Mieux encore, utilisez l' Error
objet si le moteur JavaScript le prend en charge (les très anciens peuvent ne pas l'être), ce qui a l'avantage de collecter une trace de pile et autres:
function assert(condition, message) {
if (!condition) {
message = message || "Assertion failed";
if (typeof Error !== "undefined") {
throw new Error(message);
}
throw message; // Fallback
}
}
Même IE8 a Error
(bien qu'il n'ait pas la stack
propriété, mais les moteurs modernes [y compris IE moderne] en ont).
assert
.if(!condition)
est de réglagevar throwError=true;
puisdebugger;
ensuite envelopper la section lancer dans unif(throwError)
. De cette façon, si j'ai le débogueur ouvert, il se cassera, et si je le souhaite, je peux définir la valeurthrowError
false, puis examiner toutes les étendues tout en sortant.throw
. De cette façon, vous n'avez pas besoin de ladebugger;
déclaration. Voir developer.chrome.com/devtools/docs/… pour en savoir plus.if
pour un opérateur conditionnel. De toute façon, dans le monde d'aujourd'hui, je ne prendrais pas la peine de supporter des moteurs qui n'en ont pasError
.Si vous utilisez un navigateur moderne ou nodejs, vous pouvez utiliser
console.assert(expression, object)
.Pour plus d'informations:
la source
console.error
au fait que le code continue de s'exécuter.console.assert
n'est pas si bon sauf s'il a le même comportement quethrow
.console.assert
est parce que les assertions ne sont pas des fonctions de gestion des erreurs. Ils sont conçus pour la vérification de l'exactitude du code pendant le développement uniquement. Traditionnellement, ils sont complètement désactivés dans les environnements de production pour éviter la fin des systèmes en direct à cause de quelque chose de trivial. Le navigateur est considéré comme un environnement de production, ilconsole.assert
ne met donc pas fin à son exécution. Si vous comptez sur des assertions pour arrêter l'exécution, vous devez plutôt utiliser une gestion des erreurs appropriée, car ce n'est pas à cela que servent les assertions.Les autres réponses sont bonnes: il n'y a pas de fonction d'assertion intégrée dans ECMAScript5 (par exemple JavaScript qui fonctionne essentiellement partout) mais certains navigateurs vous la fournissent ou ont des modules complémentaires qui fournissent cette fonctionnalité. Bien qu'il soit probablement préférable d'utiliser une bibliothèque bien établie / populaire / maintenue à cet effet, à des fins académiques, une fonction «affirmation du pauvre» pourrait ressembler à ceci:
la source
try
,catch
,throw
)assert()
n'est pas une fonction javascript native. Il s'agit d'une fonction personnalisée créée par quelqu'un. Vous devrez le rechercher sur votre page ou dans vos fichiers et l'afficher pour que quiconque puisse déterminer ce qu'il fait.la source
vérifiez ceci: http://net.tutsplus.com/tutorials/javascript-ajax/quick-tip-quick-and-easy-javascript-testing-with-assert/
c'est pour tester JavaScript. Étonnamment, avec à peine cinq ou six lignes, ce code offre un niveau élevé de puissance et de contrôle sur votre code lors des tests.
La fonction assert accepte deux paramètres:
résultat: un booléen, qui indique si votre test a réussi ou échoué
description: Une brève description de votre test.
La fonction assert crée ensuite simplement un élément de liste, applique une classe de «réussite» ou «échec», selon que votre test a renvoyé vrai ou faux, puis ajoute la description à l'élément de liste. Enfin, ce bloc de code est ajouté à la page. C'est fou simple, mais fonctionne parfaitement.
la source
Voici une implémentation vraiment simple d'une fonction d'assertion. Cela prend une valeur et une description de ce que vous testez.
Si la valeur est vraie, elle passe.
S'il renvoie faux, il échoue.
la source
Si l'assertion est fausse, le message s'affiche. Plus précisément, si le premier argument est faux, le deuxième argument (le message de chaîne) sera enregistré dans la console des outils de développement. Si le premier argument est vrai, il ne se passe pratiquement rien. Un exemple simple - j'utilise Google Developer Tools:
la source
Il est probablement venu avec une bibliothèque de tests qu'une partie de votre code utilise. En voici un exemple (il est probable que ce n'est pas la même bibliothèque que votre code utilise, mais cela montre l'idée générale):
http://chaijs.com/guide/styles/#assert
la source
Le mot ou la fonction "assert" est principalement utilisé pour tester des parties de l'application.
Les fonctions d'assertion sont un moyen rapide de demander au programme de vérifier la condition (également appelée "assertion") et si la condition n'est pas vraie, elle générera une erreur.
Voyons donc à quoi cela ressemblerait dans le "code normal"
if (typeof "string" === "array") { throw Error('Error: "string" !== "array"'); }
Avec
assert
vous pouvez simplement écrire:assert(typeof "string" === "array")
En Javascript, il n'y a pas de
assert
fonction native , vous devez donc en utiliser une à partir d'une bibliothèque.Pour une introduction simple, vous pouvez consulter cet article:
http://fredkschott.com/post/2014/05/nodejs-testing-essentials/
J'espère que ça aide.
la source
L'assertion renvoie un message d'erreur si le premier attribut est faux et le deuxième attribut est le message à lancer.
Il y a beaucoup de commentaires disant que l'assertion n'existe pas en JavaScript mais
console.assert()
est la fonction assert en JavaScript L'idée de l'assertion est de trouver pourquoi / où le bogue se produit.Ici, en fonction du message, vous pouvez trouver ce qu'est le bogue. Ces messages d'erreur seront affichés sur la console en couleur rouge comme si nous appelions
console.error();
Pour voir plus de fonctions dans la console exécuter
console.log(console);
la source
Les réponses précédentes peuvent être améliorées en termes de performances et de compatibilité.
Vérifier une fois si l'
Error
objet existe, sinon le déclarer:Ensuite, chaque assertion vérifie la condition et lance toujours un
Error
objetGardez à l'esprit que la console n'affichera pas le vrai numéro de ligne d'erreur, mais la ligne de la
assert
fonction, ce qui n'est pas utile pour le débogage.la source
Si vous utilisez webpack, vous pouvez simplement utiliser la bibliothèque d'assertion Node.js . Bien qu'ils prétendent que ce n'est "pas destiné à être une bibliothèque d'assertions à usage général", cela semble être plus que correct pour les assertions ad hoc, et il semble qu'aucun concurrent n'existe de toute façon dans l'espace Node (Chai est conçu pour les tests unitaires).
Vous devez utiliser webpack ou browserify pour pouvoir l'utiliser, donc évidemment cela n'est utile que si ceux-ci sont déjà dans votre flux de travail.
la source
En plus d'autres options telles que console.assert ou rouler la vôtre , vous pouvez utiliser l' invariant . Il a quelques fonctionnalités uniques:
%s
spécificateur).la source
Comme mentionné par TJ, il n'y
assert
en a pas en JavaScript. Cependant, il existe un module de nœud nommé assert , qui est principalement utilisé pour les tests . ainsi, vous pourriez voir du code comme:la source