Seleccionar página

Afortunadamente disponemos de excelentes librerías y paquetes para hacer pruebas en Javascript. Mocha, Jazmine, Jest, Chai, ShouldJS y otras soluciones similares nos ofrecen una funcionalidad completa y robusta para hacer nuestros juegos de pruebas. Animamos a todos los que tengan curiosidad sobre cómo establecer un sistema de pruebas bien estructurada que revisen estas opciones.

No obstante, sin que nos demos cuenta, disponemos en todos los navegadores modernos y en Node de un sistema para hacer pruebas sin necesidad de instalar absolutamente nada. Si no nos importa utilizar un sistema minimalista, sin dependencias y que funciona muy bien, podemos utilizar una poco conocida funcionalidad de console, que parece ser la navaja multiuso del programador: console.assert().

Este método es un assert similar al que ofrecen librerías o paquetes mucho más completos, pero la gran ventaja es que lo tenemos disponible directamente en nuestro navegador o en Node, sin necesidad de cargar nada más. Lo que console.assert() hace es evaluar una expresión y si es verdadera la ejecución continuará sin problemas, pero si es falsa, lanzará una excepción.

Sintáxis de console.assert()

Esta instrucción tiene estas opciones:

console.assert(expresión a evaluar, [mensaje], […])

  • expresión a evaluar: es cualquier expresión válida en Javascript. Puede ser la llamada a una función, el valor de una variable, la comparación de dos valores, etc. Si esta evaluación devuelve false o un valor equivalente como 0 o "", se lanzará un error.
  • mensaje y parámetros siguientes: opcionalmente, cuando se lanza el error se mostrará el mensaje que se pasa a continuación, pudiendo incluirse varios mensajes que se encadenarán o sentencias de escape y sus valores (de forma similar a como funciona console.log().

Podemos ver a continuanción un par de sencillos ejemplos:

console.assert(true, 'No hace nada');
console.assert(false, 'Ups %s.', 'algo no ha funcionado');

Algunas consideraciones

Hay que tener en cuenta que siempre tenemos que incluir una expresión que se evalue como verdadera. Si es necesario deberemos poner un not (!) cuando el valor que obtenemos es false.

Este sistema es limitado, por ejemplo, no se muestra mensajes explicando las pruebas que se van pasando, pero es sencillo incluirlos con console.log.

No creemos que este sea el mejor sistema para hacer pruebas, simplementenes el medio más sencillo y fácil de utilizar, por lo que nadie tiene excusas para no hacer un juego de pruebas de sus funciones o módulos.

Ejemplo del uso de console.assert()

En nuestra serie de artículos sobre la creación de un módulo universal de comparación de cualquier tipo de dato en Javascript (que hemos denominado esequal.js) vamos a utilizar console.assert() como sistema básico para hacer las pruebas.

Por ejemplo, en cuanto hemos desarrollado un módulo para que funcione en los navegadores y Node hemos creado también una prueba muy sencilla para comprobar que está funcionando correctamente:

if (typeof require !== 'undefined' && typeof equal === 'undefined') {
    var equal = require( './esequal' );
}

console.log('Must be a function');
console.assert( typeof equal === 'function' );
console.assert( equal.length === 2 );
console.assert( equal.name === 'equal' );
console.log('--- Ok');

if (typeof process !== 'undefined' && typeof process.exit !== 'undefined') {
    process.exit( 0 );
}

Primera versión de las pruebas de esqueal.js en GitHub.

Como se puede observar hemos incluido algunas instrucciones dependiendo si está disponible alguna funcionalidad propia de Node como require() para cargar el módulo o process.exit() para terminar la ejecución. De esta forma el juego de prueba se puede ejecutar tanto en el servidor como en el cliente.

Conclusión

Que nadie se equivoque, no estamos defendiendo que se abandonen las librerías y frameworks de pruebas, simplemente exponemos una muy sencilla forma de hacer pruebas que tenemos a nuestra disposición y que funciona. Es limitada, pero no requiere de ningún elemento externo, ya que viene por defecto en la mayoría de los navegadores y en Node. Por ello nos hemos animado a explicar cómo usarla y que quien quiera pueda sacarle todo el partido.

Como hemos comentado, en los próximos artículos donde se avanzará en el desarrollo de un módulo que permita comparar cualquier valor de Javascript vamos a utilizar este mecanismo para hacer las pruebas. Como se podrá ver, nuestra versión final de las pruebas incluye más de ochocientas pruebas con este sistema.

Novedades

Stencil JS: mejora el Time To Market de tu producto, por Rubén Aguilera

Stencil JS: mejora el Time To Market de tu producto, por Rubén Aguilera

El 25 de junio a las 19:00 (hora de Madrid) Rubén Aguilera nos contará los problemas que tienen muchas empresas a la hora de sacar productos accesibles, vistosos y usables en el Time To Market que requiere Negocio y cómo podemos minimizar este tiempo gracias al DevUI con StencilJS para adecuar una aplicación de Angular a las exigencias del mercado en tiempo record. Durante la charla se explicará de forma práctica aspectos de las tecnologías.

Svelte JS: por qué dedicarle tiempo, por Jesús Cuesta

Svelte JS: por qué dedicarle tiempo, por Jesús Cuesta

Jesús Cuesta cuenta qué es Svelte, para qué sirve, cómo compite contra aplicaciones construidas con React o Vuejs, si sirve para desarrollar web components, si la curva de aprendizaje es muy alta, y sobre todo si está suficiente maduro para utilizarlo. Si quieres conocer Svelte no puedes perderte esta introducción.

Javascript: 25 aniversario

Javascript: 25 aniversario

25 años con Javascript han dado para mucho. Pero todavía queda mucho para este lenguaje de programación.

breves

Javascript: 25 aniversario

25 años con Javascript han dado para mucho. Pero todavía queda mucho para este lenguaje de programación.

Descrubir algunas características de console

En el día a día nos encontramos muy a menudo utilizando console. Es una navaja multiusos que nos facilita la vida a la hora de depurar nuestro código. La mayoría de nosotros ha utilizado console.log(), pero tiene otras muchas funcionalidades.

Matrices dispersas o sparse arrays en JS

Una característica que puede producir algunos problemas, si no lo tenemos en cuenta, es la posibilidad de tener matrices con huecos, es decir, con algunos de sus elementos sin definir. Es lo que se suele denominar una matriz dispersa o sparse array. Veamos cómo trabajar con esta características de las matrices.

Operadores de bits usados con asiduidad

Cada día más a menudo podemos encontrar operadores binarios utilizados como formas abreviadas de algunas operaciones que de otra forma sería algo menos compactas y, quizás, más comprensibles. Veamos algunos casos en detalle.