No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

脷ltima oportunidad para asegurar tu aprendizaje por 1 a帽o a precio especial

Antes: $249

Currency
$189/a帽o

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscr铆bete

Termina en:

0D
6H
43M
37S

Implementado Setup

10/27
Recursos

Aportes 14

Preguntas 3

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Por si se quieren ahorrar la ida al gh

class Person {
  constructor(name, weight, height) {
    this.name = name;
    this.weight = weight;
    this.height = height;
  }

  calcIMC() {
    const result = Math.round(this.weight / (this.height * this.height));
    if (result < 0) {
      return 'no found';
    } if (result >= 0 && result < 18) {
      return 'down';
    } if (result >= 18 && result <= 24) {
      return 'normal';
    } if (result >= 25 && result <= 26) {
      return 'overweight';
    } if (result >= 27 && result <= 29) {
      return 'overweight level 1';
    } if (result >= 30 && result <= 39) {
      return 'overweight level 2';
    } if (result >= 40) {
      return 'overweight level 3';
    }
    return 'not found';
  }
}
module.exports = Person;

Gracias a esta clase me di cuenta de que tengo sobrepeso

C贸digo comentado / Resumen
Agrupar los casos nos deja una mejor organizaci贸n en el documento del test y en la salida de terminal.

// Aqu铆 implementaremos los hooks y los grupos (describe) con una clase de pruebas.

const Person = require('./06-person');

describe('Test for Person', () => { // Se agrupan las pruebas de rango IMC
  let person; // Se instancia el objeto persona para automatizar.
  beforeEach(() => {
    person = new Person('Rigo', 45, 1.7); // Asignamos datos a la nueva persona.
  });
  test('should return down', () => {
    person.weight = 45; // Cambiamos los datos de la persona para este rango/caso.
    const imc = person.calcIMC();
    expect(imc).toBe('down');
  });

  test('should return normal', () => {
    person.weight = 59;
    const imc = person.calcIMC();
    expect(imc).toBe('normal');
  });
});

  • OUT Terminal 06-person.test.js
顐 ~/.../testing-js/demos 顐 顐 master 鈼 顐 npm run test -- 06-person

> [email protected] test
> jest "06-person"

 PASS  src/06-person.test.js
  Test for Person
    鉁 should return down (8 ms)
    鉁 should return normal (1 ms)

Test Suites: 1 passed, 1 total
Tests:       2 passed, 2 total
Snapshots:   0 total
Time:        0.378 s, estimated 1 s
Ran all test suites matching /06-person/i.
  • OUT Terminal 02-math.test.js
顐 ~/.../testing-js/demos 顐 顐 master 鈼 顐 npm test -- 02-math

> [email protected] test
> jest "02-math"

 PASS  src/02-math.test.js
  Test for math
    test for sum
      鉁 adds 1 + 3 should be 4 (2 ms)
    test for multiply
      鉁 should be 4
    test for divide
      鉁 should divide (1 ms)
      鉁 should divide for zero (1 ms)
    test for volume
      鉁 should be 38 (1 ms)

Test Suites: 1 passed, 1 total
Tests:       5 passed, 5 total
Snapshots:   0 total
Time:        0.372 s, estimated 1 s
Ran all test suites matching /02-math/i.

Coloqu茅 la construccion del objeto person dentro de un beforeAll() de modo que solo se construya una vez y deba ser llamado con cada test. En este caso no es la gran optimizaci贸n pero para casos mas grandes puede servir xD

const Person = require('./06-person');

describe('Person IMC', () => {
  let person;
  beforeAll(() => {
    person = new Person('Rodolfo', 60, 1.77);
  });
  /* beforeEach(() => {
    person = new Person('Rodolfo', 60, 1.77);
  }); */
  test('Person', () => {
    person.weight = 70;
    expect(person.calcIMC()).toBe('normal');
  });
  test('Person', () => {
    person.weight = 70;
    expect(person.calcIMC()).toBe('normal');
  });
  test('Person', () => {
    person.weight = 80;
    expect(person.calcIMC()).toBe('overweight');
  });
});

Me est谩 gustando esto 馃槃

Implementando Setup

Para correr solamente 1 archivo de test, hacemos npm run test -- nombre-archivo.

  1. El describe nos permite crear un bloque dentro del cual agrupamos nuestras pruebas.
  2. Podemos crear un bloque dentro de otro para organizar mejor nuestras pruebas.

Este comando te permite ejecutar un archivo en especifico enviando como parametro el Nombre del Archivo {name-file}.

npm run test 鈥 {name-file}

El beforeEach no tiene mucho sentido usarlo en el ejemplo de Person, ya que la instancia de Person puede solo inicializarse una vez y en cada test que se le cambie el weight and height

Encantando con eslint , jajjaja

Recuerden que para ejecutar un solo test, se debe agregar en el comando

npm run test -- 06-person

Con el -- y el espacio despues.

modifiqu茅 el script que corre las pruebas para que tambi茅n corrija los errores de linter, as铆: ` "test": "jest && eslint src/** --fix"`
Muy buen video!

Correr solo este test

npm run test -- 06-person

Organizar los Tests dentro de describes anidados nos permite mostrar y entender muy f谩cilmente los resultados de los tests