Composición de un Test en TDD y sus métodos
En esta entrada hablaremos de la composición de un test en TDD, y los métodos que suelen usarse en ellos.
Composición de un test en TDD. Métodos mas comunes
- describe: Se utiliza para agrupar un conjunto de pruebas, donde se ejecutarán pruebas unitarias agrupadas por clase y/o por método de la clase.
describe("Test for Person", ()=>{
describe("Test for person.getFullName", ()=>{
});
describe("Test for person.getAgeInYears", ()=>{
});
});
- beforeeach: Dentro de cada describe, podemos incluirlo. Todo lo que ejecutamos dentro de él, se ejecuta antes de cada it que contiene el describe*.* Un posible uso puede ser, para inicializar una variable que todos los test de ese describe usarán.
describe("Test for Person", ()=>{
beforeEach(()=>{
// Código que se ejecutará al principio de cada it de éste describe
});
describe("Test for person.getFullName", ()=>{
beforeEach(()=>{
// Código que se ejecutará al principio de cada it de éste describe
});
});
describe("Test for person.getAgeInYears", ()=>{
});
});
- aftereach: Igual que el anterior, dentro de cada describe se podría incluir. Todo lo que ejecutamos dentro de él, se ejecuta al acabar cada it que contiene el describe*.* Un posible uso puede ser en parar todo flujo en la aplicación una vez acabada las comprobaciones, para que al siguiente test, no le afecte.
describe("Test for Person", ()=>{
afterEach(()=>{
// Código que se ejecutará al final de cada it de éste describe
});
describe("Test for person.getFullName", ()=>{
afterEach(()=>{
// Código que se ejecutará al final de cada it de éste describe
});
});
describe("Test for person.getAgeInYears", ()=>{
});
});
- it: En cada it, definimos los casos de prueba a testear dentro de cada describe. Cada uno de ellos, debe evaluar un caso de prueba en particular.
describe("Test for Person", ()=>{
describe("Test for person.getFullName", ()=>{
it("should return an string with name + lastname", ()=>{
//CODE
});
});
describe("Test for person.getAgeInYears", ()=>{
it("should return '34' years", ()=>{
//CODE
});
it("should return '24' years", ()=>{
//CODE
});
it("should return '20' years with negative number", ()=>{
//CODE
});
});
});
- expect: En los expect se verifica el comportamiento de nuestro código esperando un resultado utilizando matcher para ello. (Matcher o verificadores de Jasmine).
expect(6+6).toEqual(12);
expect(1 === 1).toBeThuthy();
expect(null).toBeNull();
expect("Nicolas").toEqual("Nicolas");
Test Completo
describe("Test for Person", ()=>{
describe("Test for person.getFullName", ()=>{
it("should return an string with name + lastname", ()=>{
let person = new Person("Nicolas", "Molina", 24);
expect(person.getFullName()).toEqual("Nicolas Molina");
});
});
describe("Test for person.getAgeInYears", ()=>{
it("should return '34' years", ()=>{
let person = new Person("Nicolas", "Molina", 24);
let age = person.getAgeInYears(10);
expect(age).toEqual(34);
});
it("should return '20' years", ()=>{
let person = new Person("Nicolas", "Molina", 20);
let age = person.getAgeInYears(15);
expect(age).toEqual(35);
});
it("should return '20' years with negative number", ()=>{
let person = new Person("Nicolas", "Molina", 28);
let age = person.getAgeInYears(-10);
expect(age).toEqual(28);
});
});
});
