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:
configuration:
- 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,173