Respuestas:
No existe assert
en JavaScript (todavía; se habla de agregar uno , pero está en una etapa temprana). Quizás esté utilizando alguna biblioteca que proporcione una. El significado habitual es arrojar un error si la expresión pasada a la función es falsa; Esto es parte del concepto general de verificación de afirmaciones . Por lo general, las aserciones (como se las llama) se usan solo en las versiones de "prueba" o "depuración" y se eliminan del código de producción.
Suponga que tiene una función que se supone que siempre debe aceptar una cadena. Desearía saber si alguien llamó a esa función con algo que no era una cadena. Entonces podrías hacer:
assert(typeof argumentName === "string");
... donde assert
arrojaría un error si la condición fuera falsa.
Una versión muy simple se vería así:
function assert(condition, message) {
if (!condition) {
throw message || "Assertion failed";
}
}
Mejor aún, haga uso del Error
objeto si el motor de JavaScript lo admite (los más antiguos podrían no serlo), lo que tiene la ventaja de recopilar un seguimiento de pila y tal:
function assert(condition, message) {
if (!condition) {
message = message || "Assertion failed";
if (typeof Error !== "undefined") {
throw new Error(message);
}
throw message; // Fallback
}
}
Incluso IE8 tiene Error
(aunque no tiene la stack
propiedad, pero los motores modernos [incluido el IE moderno] sí).
if(!condition)
está fijando var throwError=true;
a continuación, debugger;
luego envolver la sección de tiro en una if(throwError)
. De esa manera, si tengo el depurador abierto, se romperá, y si lo deseo puedo establecerlo throwError
en falso y luego examinar todos los ámbitos mientras salgo.
throw
. De esa manera no necesitas la debugger;
declaración. Visita developer.chrome.com/devtools/docs/… para más información.
if
por un operador condicional. De todos modos, en el mundo de hoy, no me molestaría en admitir motores que no tienen Error
.
Si usa un navegador moderno o nodejs, puede usar console.assert(expression, object)
.
Para más información:
console.error
si el código continuara ejecutándose.
console.assert
no es tan bueno a menos que tenga el mismo comportamiento que throw
.
console.assert
es porque las aserciones no son funciones de manejo de errores. Están diseñados para la verificación de la corrección del código solo durante el desarrollo. Tradicionalmente, están completamente deshabilitados en entornos de producción para evitar que los sistemas en vivo terminen debido a algo trivial. El navegador se considera un entorno de producción, por lo console.assert
que no finaliza la ejecución allí. Si confía en las aserciones para detener la ejecución, entonces debería usar un manejo de errores adecuado, ya que esto no es para lo que están hechas las aserciones.
Las otras respuestas son buenas: no hay una función de aserción integrada en ECMAScript5 (por ejemplo, JavaScript que funciona básicamente en todas partes), pero algunos navegadores se la proporcionan o tienen complementos que proporcionan esa funcionalidad. Si bien es probable que sea mejor usar una biblioteca bien establecida / popular / mantenida para esto, para fines académicos, una función de "afirmación del pobre" podría verse así:
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()
No es una función nativa de JavaScript. Es una función personalizada que alguien hizo. Tendrá que buscarlo en su página o en sus archivos y publicarlo para que cualquiera lo ayude a determinar lo que está haciendo.
compruebe esto: http://net.tutsplus.com/tutorials/javascript-ajax/quick-tip-quick-and-easy-javascript-testing-with-assert/
es para probar JavaScript. Sorprendentemente, con apenas cinco o seis líneas, este código proporciona un gran nivel de potencia y control sobre su código, durante las pruebas.
La función de aserción acepta dos parámetros:
resultado: un valor booleano, que hace referencia a si su prueba pasó o no
descripción: una breve descripción de su prueba.
La función de aserción simplemente crea un elemento de la lista, aplica una clase de "aprobado" o "fallido", dependiendo de si su prueba arrojó verdadero o falso, y luego agrega la descripción al elemento de la lista. Finalmente, ese bloque de codificación se agrega a la página. Es una locura simple, pero funciona perfectamente.
Aquí hay una implementación realmente simple de una función de aserción. Se necesita un valor y una descripción de lo que está probando.
function assert(value, description) {
var result = value ? "pass" : "fail";
console.log(result + ' - ' + description);
};
Si el valor se evalúa como verdadero, pasa.
assert (1===1, 'testing if 1=1');
Si devuelve falso, falla.
assert (1===2, 'testing if 1=1');
Si la afirmación es falsa, se muestra el mensaje. Específicamente, si el primer argumento es falso, el segundo argumento (el mensaje de cadena) se registrará en la consola de herramientas del desarrollador. Si el primer argumento es verdadero, básicamente no pasa nada. Un ejemplo simple: estoy usando las Herramientas para desarrolladores de 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.');
Probablemente vino con una biblioteca de prueba que está usando parte de su código. Aquí hay un ejemplo de uno (es probable que no sea la misma biblioteca que está usando su código, pero muestra la idea general):
La palabra o función "afirmar" se usa principalmente para probar partes de la aplicación.
Las funciones de afirmación son una forma breve de indicar al programa que verifique la condición (también llamada "aserción") y si la condición no es Verdadera, arrojará un error.
Así que veamos cómo se vería en "código normal"
if (typeof "string" === "array") {
throw Error('Error: "string" !== "array"');
}
Con assert
usted simplemente puede escribir:
assert(typeof "string" === "array")
En Javascript, no hay una assert
función nativa , por lo que debe usar una de alguna biblioteca.
Para una introducción simple, puede consultar este artículo:
http://fredkschott.com/post/2014/05/nodejs-testing-essentials/
Espero que ayude.
La aserción arroja un mensaje de error si el primer atributo es falso y el segundo atributo es el mensaje que se lanzará.
console.assert(condition,message);
Hay muchos comentarios que dicen que la aserción no existe en JavaScript, pero console.assert()
es la función de aserción en JavaScript. La idea de la aserción es encontrar por qué / dónde ocurre el error.
console.assert(document.getElementById("title"), "You have no element with ID 'title'");
console.assert(document.getElementById("image"), "You have no element with ID 'image'");
Aquí, dependiendo del mensaje, puede encontrar cuál es el error. Estos mensajes de error se mostrarán en la consola en color rojo como si llamáramos console.error();
Para ver más funciones en la consola ejecutarconsole.log(console);
Las respuestas anteriores se pueden mejorar en términos de rendimiento y compatibilidad.
Verifique una vez si el Error
objeto existe, si no lo declara:
if (typeof Error === "undefined") {
Error = function(message) {
this.message = message;
};
Error.prototype.message = "";
}
Luego, cada aserción verificará la condición y siempre arrojará un Error
objeto
function assert(condition, message) {
if (!condition) throw new Error(message || "Assertion failed");
}
Tenga en cuenta que la consola no mostrará el número de línea de error real, sino la línea de la assert
función, que no es útil para la depuración.
Si utiliza webpack, sólo puede utilizar la biblioteca afirmación Node.js . Aunque afirman que "no pretende ser una biblioteca de aserciones de propósito general", parece estar más que bien para las aserciones ad hoc, y parece que no existe ningún competidor en el espacio Node de todos modos (Chai está diseñado para pruebas unitarias).
const assert = require('assert');
...
assert(jqXHR.status == 201, "create response should be 201");
Debe usar webpack o browserify para poder usar esto, por lo que obviamente esto solo es útil si ya están en su flujo de trabajo.
Además de otras opciones como console.assert o rodar la suya , puede usar invariante . Tiene un par de características únicas:
%s
especificador).Como mencionó TJ, no hay assert
en JavaScript. Sin embargo, hay un módulo de nodo llamado asir , que se utiliza principalmente para las pruebas . entonces, puede ver código como:
const assert = require('assert');
assert(5 > 7);
assert
.