Réponses:
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).
if(!condition)
est de réglage var throwError=true;
puis debugger;
ensuite envelopper la section lancer dans un if(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 valeur throwError
false, puis examiner toutes les étendues tout en sortant.
throw
. De cette façon, vous n'avez pas besoin de la debugger;
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 pas Error
.
Si vous utilisez un navigateur moderne ou nodejs, vous pouvez utiliser console.assert(expression, object)
.
Pour plus d'informations:
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 que throw
.
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, il console.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:
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()
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.
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.
Voici une implémentation vraiment simple d'une fonction d'assertion. Cela prend une valeur et une description de ce que vous testez.
function assert(value, description) {
var result = value ? "pass" : "fail";
console.log(result + ' - ' + description);
};
Si la valeur est vraie, elle passe.
assert (1===1, 'testing if 1=1');
S'il renvoie faux, il échoue.
assert (1===2, 'testing if 1=1');
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:
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.');
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):
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.
L'assertion renvoie un message d'erreur si le premier attribut est faux et le deuxième attribut est le message à lancer.
console.assert(condition,message);
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.
console.assert(document.getElementById("title"), "You have no element with ID 'title'");
console.assert(document.getElementById("image"), "You have no element with ID 'image'");
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écuterconsole.log(console);
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:
if (typeof Error === "undefined") {
Error = function(message) {
this.message = message;
};
Error.prototype.message = "";
}
Ensuite, chaque assertion vérifie la condition et lance toujours un Error
objet
function assert(condition, message) {
if (!condition) throw new Error(message || "Assertion failed");
}
Gardez à 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.
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).
const assert = require('assert');
...
assert(jqXHR.status == 201, "create response should be 201");
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.
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).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:
const assert = require('assert');
assert(5 > 7);
assert
.