Qué es QUnit. La forma más sencilla de explicarlo sería la siguiente: es un conjunto de pruebas unitarias fácil de usar para Javascript que en la actualidad es usado por los proyectos JQuery, JQuery UI, JQuery Mobile y además es capaz de hacer pruebas de cualquier código Javascript, incluyéndose a sí mismo. Por esta breve definición lo que se denota es que QUnit es robusto y tiene un gran alcance.
La historia de esta fabulosa herramienta fue desarrollada por John Resig como parte del proyecto llamado JQuery y ahora muchos la usan en sus desarrollos. En el año 2008 QUnit tiene su propia casa, nombre y documentación del API, permitiéndoles además a otras personas usar sus propias herramientas de pruebas unitarias también. En aquel entonces, este framework tenía una gran dependencia de JQuery, pero después, en el año 2009, se hicieron cambios sustanciales y QUnit ya podía ejecutarse solo.
<!DOCTYPE html>
<html>
<head>
<title>QUnit Testing</title>
<link rel="stylesheet" type="text/css" href="qunit.css">
</head>
<body>
<div id="qunit"></div>
<script type="text/javascript" src="qunit.js"></script>
<script type="text/javascript" src="test.js"></script>
</body>
</html>
Se observa los archivos “qunit.css” para los estilos, “qunit.js” que contiene el framework para las pruebas unitarias, lo particular es el fichero llamado “test.js” es donde yo en lo personal hago el código de las pruebas. Se procede a correr el archivo .html en el navegador de preferencia y listo.
ok():
El más sencillo solo tiene un resultado ya sea verdadero o falso y tiene la capacidad de desplegar un mensaje.
Ejemplo:
test("funciones basicas",function(){
var one = 2;
var two = 2;
ok( one == two, "Excelente");
});
Explicación:
Se verifica si ambas variables tienen el mismo valor.
equal():
Esta función permite la comparación de dos valores, cuando ambos valores concuerdan la prueba unitaria es completada satisfactoriamente de lo contrario falla y se presentan los dos valores. Además permite presentar un mensaje.
Ejemplo:
test("pruebas de afirmaciones",function(){
var password = "Hola Mundo";
var password2 = "Hola Mundo";
equal(password,password2,"Los password no son iguales");
});
Explicacion:
Verifica si ambos passwords son iguales; de no ser así se presenta el mensaje:
deepEqual():
Es una afirmación más estricta al momento de hacer comparaciones de datos primitivos u objetos, posee tres argumentos que son valor actual, valor esperado y mensaje.
Ejemplo:
test("Comparar datos",function(){
var valor1 = 1;
var valor2 = 1;
deepEqual(valor1,valor2,"Valores distintos");
});
Explicación:
Es una prueba unitaria donde se verifica si los valores son del mismo tipo de dato, en tal caso que uno de ellos fuera una cadena de caracteres la prueba no pasa.
strictEqual():
Es otro tipo de afirmación si deseamos ser más extremistas en la veracidad de los datos que estamos manipulando en nuestro proyecto, esta función verifica los datos al estilo “===” donde los tipos de datos deben ser del mismo género.
Ejemplo:
test("Cadenas y Numeros", function(){
var valor = 1
var valor2 = 1
strictEqual(valor,valor2,"No se pueden compa números con cadenas");
});
Explicación:
Al ver el ejemplo se puede observar las variables son de tipo entero y por ende la prueba unitaria es aplicada satisfactoriamente, pero en el caso que una de las variable tuviera el valor entre comillas, se presenta un error porque los datos no son del mismo género.
Existen más funciones que nos ayudan a poder pasar por pruebas unitarias nuestro código pero con las mencionadas es suficiente para aplicarlo a nuestros proyectos.
module():
Con esta función podemos agrupar las pruebas unitarias por medio de una descripción o característica que tengan las mismas.
Ejemplo:
module(" grupo post ");
test("primera prueba post",function(){
ok(true,"enviando post");
});
test("segundo prueba post",function(){
ok(true,"actualizando post");
});
module(" grupo get ");
test("primera prueba get",function(){
ok(true,"recibiendo get");
});
test("segundo prueba post",function(){
ok(true,"desplegando get");
});
Explicación:
Al observar cómo está estructurada la prueba unitaria, vemos dos módulos “grupo post” y “grupo get”, de esta manera se pueden clasificar nuestras pruebas unitarias dentro del proyecto. Un ejemplo sencillo para explicar el tema.
Con las características mencionadas de QUnit es muy sencillo que forme parte de nuestros proyectos y además aprenderlo nos ayuda como programadores o desarrolladores a poder tener un código íntegro y libre de muchos errores.
Sin más que decir “Happy Testing”.