El porqué de jasmine es que muchos programadores están desarrollando un proyecto web es casi un 99% que se utilice javascript o alguna librería derivada de este lenguaje, además cuando se codifica en este lenguaje se crean muchas funciones para eventos o alguna otra funcionalidad dentro del proyecto. Además muchos programadores han visto las pruebas unitarias como algo muy molesto debido algunos frameworks de estos tipos no le hacían el trabajo un poco más fácil al desarrollador, jasmine en su sencillez trata de hacer la vida más fácil a la persona que lo implementa en el proyecto
Suites:
Los “suites” es un nombre que describe a qué género o sección se va a pasar por un conjunto de pruebas unitarias además tiene una herramienta que es el núcleo que se necesita para poder tener un orden al momento de crear las pruebas.
“describes” es una función global y es con la cual se inicia toda prueba unitaria, además consta con dos parámetros y las sintaxis de la misma es así describe(“”, function(){});
“it” como “describe” es una función que toma dos parámetros que el primero es una cadena de caracteres para describir un título o nombre de la prueba unitaria y como segundo parámetro una función donde se ejecuta un bloque de código, y la sintaxis es la siguiente it(“”, function(){});
Expectations:
Son construidas con la función “expect” el cual toma el valor actual, ese valor está enlazado con la función matcher(inglés) que toma el valor esperado. La sintaxis es la siguiente
expect(valor actual).matchers(valor esperado)
Matchers:
Los matchers son funciones que implementan comparaciones booleanas entre el valor actual y el esperado, ellos son los responsables de reportar a jasmine si la expectativa es verdadera o falsa.
Listado de matchers más comunes aunque se pueden crear matchers personalizados a la necesidad del programador.
Pero antes de ejecutar nuestro primero ejemplo debemos descargar el archivo que contiene Jasmine para poder realizar nuestras prueba, con el siguiente enlace https://github.com/pivotal/jasmine/downloads , una vez en tu computadora extraes los archivos y en la carpeta llamada “spec” colocas los archivos o scripts donde están escritas las pruebas unitarias y en la llamada “src” colocan los archivos que tienen las funciones del proyecto. El último paso es buscar el archivo llamado “SpecRunner.htnl” y es donde colocas las rutas de los archivos colocados en las carpetas mencionadas anteriormente, después de eso manos a la obra.
Ejemplo 1:
describe("operaciones aritméticas", function(){
it("adicion", function(){
var suma = 1 + 3;
expect(suma).toEqual(4);
});
it("resta", function(){
var resta = 2 + 1;
expect(resta).toBeLessThan(4);
});
it("multiplicacion", function(){
var multiplicacion = 2 * 10;
expect(multiplicacion).toBeGreaterThan(9);
});
it("division", function(){
var division = 15 + 3;
expect(division).toEqual(5);
});
});
En este ejemplo podemos observar cómo se ejecutan pruebas unitarias de las cuatro operaciones aritméticas básicas. Como se observa en el ejemplo se puede agrupar muchas pruebas en un grupo específico gracias a “specs” y “describe”.
Todo no acaba con la muestra anterior todavía jasmine tiene más sorpresas para nosotros y son y se explicarán con el siguiente bloque.
Ejemplo 2:
describe("operaciones aritméticas", function(){
var suma;
var resta;
var multiplicacion;
var division;
beforeEach(function(){
suma = 1 + 3;
resta = 2 + 1;
multiplicacion = 2 * 10;
division = 15 + 3;
});
afterEach(function(){
suma = 0;
resta = 0;
multiplicacion = 0;
division = 0;
});
it("adicion", function(){
expect(suma).toEqual(4);
});
it("resta", function(){
expect(resta).toBeLessThan(4);
});
it("multiplicacion", function(){
expect(multiplicacion).toBeGreaterThan(9);
});
it("division", function(){
expect(division).toEqual(5);
});
});
Este ejemplo es parecido al anterior pero con la diferencia que aplicamos las funciones mencionadas en el párrafo anterior.
La finalidad es poder crear “describe” dentro de “describe” entonces esto se hace para poder darle más claridad y modularidad, la mejor manera de explicar esto es a través de nuestro último ejemplo.
Ejemplo 3:
describe("calculadora",function(){
describe("operaciones aritméticas", function(){
var suma;
var resta;
var multiplicacion;
var division;
beforeEach(function(){
suma = 1 + 3;
resta = 2 + 1;
multiplicacion = 2 * 10;
division = 15 + 3;
});
afterEach(function(){
suma = 0;
resta = 0;
multiplicacion = 0;
division = 0;
});
it("adicion", function(){
expect(suma).toEqual(4);
});
it("resta", function(){
expect(resta).toBeLessThan(4);
});
it("multiplicacion", function(){
expect(multiplicacion).toBeGreaterThan(9);
});
it("division", function(){
expect(division).toEqual(5);
});
});
describe("operaciones especiales",function(){
beforeEach(function(){
var raizcuadrada = 0;
var exponente = 0;
var base = 0;
});
afterEach(function(){
var raizcuadrada = 0;
var exponente = 0;
var base = 0;
});
it("raiz cuadrada",function(){
raizcuadrada = 4
expect(raizcuadrada).toEqual(Math.sqrt(16));
});
it("exponente",function(){
var exponente = 3;
var base = 4;
respuesta = Math.pow(base,exponente);
expect(respuesta).toEqual(64);
});
});
});
Con este ejemplo se observa que la anidación descrita en el párrafo anterior algo que nos ayuda como programadores que realizamos pruebas unitarias en nuestros proyectos. Por lo visto durante este escrito solo quedar animarse para implementar esta excelente herramienta en nuestro proyecto web actual o futuro solo queda decir “Happy Testing”.