¿Qué assert
significa en JavaScript?
He visto algo como:
assert(function1() && function2() && function3(), "some text");
Y me gustaría saber qué hace el método assert()
.
fuente
¿Qué assert
significa en JavaScript?
He visto algo como:
assert(function1() && function2() && function3(), "some text");
Y me gustaría saber qué hace el método assert()
.
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í).
assert
.if(!condition)
está fijandovar throwError=true;
a continuación,debugger;
luego envolver la sección de tiro en unaif(throwError)
. De esa manera, si tengo el depurador abierto, se romperá, y si lo deseo puedo establecerlothrowError
en falso y luego examinar todos los ámbitos mientras salgo.throw
. De esa manera no necesitas ladebugger;
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 tienenError
.Si usa un navegador moderno o nodejs, puede usar
console.assert(expression, object)
.Para más información:
fuente
console.error
si el código continuara ejecutándose.console.assert
no es tan bueno a menos que tenga el mismo comportamiento quethrow
.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 loconsole.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í:
fuente
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.fuente
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.
fuente
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.
Si el valor se evalúa como verdadero, pasa.
Si devuelve falso, falla.
fuente
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:
fuente
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):
http://chaijs.com/guide/styles/#assert
fuente
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.
fuente
La aserción arroja un mensaje de error si el primer atributo es falso y el segundo atributo es el mensaje que se lanzará.
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.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 ejecutar
console.log(console);
fuente
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:Luego, cada aserción verificará la condición y siempre arrojará un
Error
objetoTenga 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.fuente
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).
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.
fuente
Además de otras opciones como console.assert o rodar la suya , puede usar invariante . Tiene un par de características únicas:
%s
especificador).fuente
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:fuente