LET'S BUILD TOGETHER

rocka.co

jdmorales092@gmail.com

John Darwin Morales

Frontend Developer

Pruebas unitarias en Javascript

con Jasmine

Sorry es esta:

Pruebas de software

Es el proceso para de evaluación de un sistema o sus componentes con la intención de buscar si se satisfacen los requerimientos especificados o no.

Tipos de pruebas

LET'S BUILD TOGETHER

Funcionales

No funcionales

- Humo

- Unitarias

- Integración

- Aceptación(usuario)

- Regresión

...

- Desempeño

- Carga

- Escalabilidad

- Usabilidad

- Seguridad

...

Niveles Pruebas Funcionales

LET'S BUILD TOGETHER

Pruebas Unitarias

LET'S BUILD TOGETHER

- Se enfocan en ejecutar una unidad mínima código.

 

- Busca satisfacer que cada unidad de código escrito, vaya de acuerdo a los requerimientos de usuario.

Hablemos de Jasmine

LET'S BUILD TOGETHER

- Framework orientado a pruebas. 

- No depende de otros frameworks.

- No requiere del DOM.

- Tiene una sintaxis fácil de entender.

Conceptos básicos

LET'S BUILD TOGETHER

describe("A suite", function() {

  it("contains spec with an expectation", function() {

    expect(true).toBe(true);

  });

});

- Specs

- Expectations

- Matchers

Instalación

LET'S BUILD TOGETHER

// Install Jasmine
npm install jasmine

// Init Jasmine project
jasmine init
{
  "spec_dir": "spec",
  "spec_files": [
    "**/*[sS]pec.js"
  ],
  "helpers": [
    "helpers/**/*.js"
  ],
  "stopSpecOnExpectationFailure": false,
  "random": true
}

Shell

/spec/suport/jasmine.json

Ejemplo de Uso

LET'S BUILD TOGETHER

Dar Formato a una Hora

Entrada Salida
0 12:00am
5 05:00am
12 12:00pm
16 04:00pm
23 11:00pm
24 error
var formatHour = require('../src/formatHour');

describe('Test format hour', function () {

	it('Return error', function () {
	    expect(function (){
                formatHour(24)
            }).toThrow('Number not allowed')
	});

});

Probemos primero el Error

var formatHour = require('../src/formatHour');

describe('Test format hour', function () {
	
	it('Return error', function () {
	    expect(function (){
                formatHour(24)
            }).toThrow('Number not allowed')
	});
	
	it('Return formatted hour', function () {
		expect(formatHour(0)).toEqual('12:00am', 'Should be 12:00am');
		expect(formatHour(5)).toEqual('05:00am', 'Should be 05:00am');
		expect(formatHour(12)).toEqual('12:00pm', 'Should be 12:00pm');
		expect(formatHour(16)).toEqual('04:00pm', 'Should be 04:00pm');
		expect(formatHour(23)).toEqual('11:00pm', 'Should be 11:00pm');
	})
	
});

Otros casos de éxito

function formatHour(num) {
    if (num >= 24){
        throw 'Number not allowed';
    }

    var numFormat = num % 12;
    var stringHour = numFormat.toString();
    var perioFormat = (num >= 12)? "pm" : "am";

    if(numFormat === 0){
        stringHour = "12";
    }else if(numFormat < 10){
        stringHour = "0" + numFormat.toString();
    }

    return stringHour + ":00" + perioFormat;
}

module.exports = formatHour;

Código a probar

Demo time

Corredor de pruebas:

- Reporte de cobertura (Code Coverage)

- Revisa cambios de pruebas y archivos js

- Configurar Navegadores para correr pruebas.

Instalación

// Install Jasmine
npm install karma -g
npm install karma --save-dev


// Init Jasmine project
karma init karma.conf.js

Shell

// Install plugins
npm install karma-coverage karma-jasmine karma-phantomjs-launcher

Instalar plugins:  (reporte de cobertura, Jasmine, PhanthomJS)

Introducción pruebas unitarias con javascript

By John Darwin Morales González

Introducción pruebas unitarias con javascript

  • 1,162