No tienes acceso a esta clase

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

Tu primer test

6/27
Recursos

Aportes 6

Preguntas 2

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Reg铆strate o inicia sesi贸n para participar.

Respecto de la salida de pantalla:

Test Suites: 2 passed, 2 total
Tests: 4 passed, 4 total

Cada archivo ser铆a un test suite. En este caso 02-math.test y 01-sum.test.

Hola , me salt茅 para ser el primer comentario, ya que es el primer test :

< console.log( Hola Mundo del Testing); > 

no paremos de aprender. 馃槃

馃Tu primer test

  1. Crear el archivo JS que contenga el c贸digo a evaluar
function sum(a, b) {
  return a + b;
}

function multiply(a, b) {
  return a * b;
}

function divide(a, b) {
  if (b === 0) {
    return null;
  }
  return a / b;
}

module.exports = {
  sum,
  multiply,
  divide,
};

2)Crear el archivo de pruebas para el c贸digo a evaluar

const { sum, multiply, divide } = require('./02-math'); // Importar el archivo JS a evaluar

//test = Define la pueba a hacer 
test ("Descripci贸n de la prueba", ()=>{

	//Ejecuci贸n de la prueba en el c贸digo

	/*expect= Define y compara que el resultado esperado a partir de la pueba realizada
	sea igual al obtenido espues de la ejecuci贸n*/

	expect(/*Resultado de la ejecuci贸n*/).toBe(/*Resultado de la prueba*/);
	
});

test("add 1 + 3 should be 4", () => { 
  const rta = sum(1, 3);
  expect(rta).toBe(4);
});

test("add 1 * 4 should be 4", () => {
  const rta = multiply(1, 4);
  expect(rta).toBe(4);
});

test("add 1 / 4 should be 4", () => {
  const rta = divide(6, 3);
  expect(rta).toBe(2);
  const rta2 = divide(5, 2);
  expect(rta2).toBe(2.5);
});

test("should divide for zero", () => {
  const rta = divide(6, 0);
  expect(rta).toBeNull();
  const rta2 = divide(5, 0);
  expect(rta2).toBeNull();
});
  1. Ejecutar las pruebas con npm run test

Reto: Funci贸n para sacar promedio de un array

02-math.js

<function promedio(array) {
  let sum = 0;
  array.forEach((element) => {
    sum = sum + element;
  });
  return sum / array.length;
}>

02-math.test.js

<test("saca el promedio de un array", () => {
  array = [1,5,6]
  const rta = promedio(array);
  expect(rta).toBe(4)
});> 

Out

<鉃  src git:(master) 鉁 npm run test
Debugger attached.

> [email protected] test /Users/jhonospina/Documents/Desarrollo/Platzi/Platzi-testingJS/demos
> jest

Debugger attached.
Debugger attached.
Debugger attached.
Debugger attached.
 PASS  src/01-sum.test.js
 PASS  src/02-math.test.js
Waiting for the debugger to disconnect...
Waiting for the debugger to disconnect...
Waiting for the debugger to disconnect...

Test Suites: 2 passed, 2 total
Tests:       2 passed, 2 total
Snapshots:   0 total
Time:        5.404 s
Ran all test suites.
Waiting for the debugger to disconnect...
Waiting for the debugger to disconnect...> 

RETO

  • Funci贸n Volumen de un cilindro:
function cylinderVol(r, a) {
  return Math.PI * r * r * a;
}
  • Test
test("should be 38", () => {
  const rta = cylinderVol(2,3);
  expect(rta).toBe(38);
});
  • Out Terminal
顐 ~/.../testing-js/demos 顐 顐 master 鈼 顐 npm run test

> [email protected] test
> jest

 FAIL  src/02-math.test.js
  鈼 should be 4

    expect(received).toBe(expected) // Object.is equality

    Expected: 38
    Received: 37.69911184307752

      31 | test("should be 4", () => {
      32 |   const rta = cylinderVol(2,3);
    > 33 |   expect(rta).toBe(37.699111843);
         |               ^  
      34 | });   //Ser谩 que pongo el numero m谩s largo en el test o lo redondeo en la funci贸n? sigue leyendo...
      35 |
      36 | /* OUT

      at Object.toBe (src/02-math.test.js:33:15)

 PASS  src/01-sum.test.js

Test Suites: 1 failed, 1 passed, 2 total
Tests:       1 failed, 5 passed, 6 total
Snapshots:   0 total
Time:        0.523 s, estimated 1 s
Ran all test suites.
  • Refactor
function cylinderVol(r, a) {
  // refactor...
  return Math.ceil(Math.PI * r * r * a);
  // ... refactor
}
  • Out Terminal
顐 ~/.../testing-js/demos 顐 顐 master 鈼 顐 npm run test

> [email protected] test
> jest

 PASS  src/01-sum.test.js
 PASS  src/02-math.test.js

Test Suites: 2 passed, 2 total
Tests:       6 passed, 6 total
Snapshots:   0 total
Time:        0.833 s
Ran all test suites.

馃槂 馃挌 馃槃

Mi c贸digo comentado/resumen

const { sum, multiply, divide } = require('./02-math');

test("adds 1 + 3 should be 4", () => { // escenario de bruebas.
  const rta = sum(1,3); // resolver la prueba.
  expect(rta).toBe(4); // resolver la hipotesis.
});

/* OUT

顐 ~/.../testing-js/demos 顐 顐 master 鈼 顐 npm run test

> [email protected] test
> jest

 PASS  src/01-sum.test.js
 PASS  src/02-math.test.js  // Pas茅 o encontr茅 2 archivos con la extensi贸n ".test.js".

Test Suites: 2 passed, 2 total  // All铆 encontr茅 2 pruebas.
Tests:       2 passed, 2 total  // Todas pasaron.
Snapshots:   0 total
Time:        0.504 s, estimated 1 s
Ran all test suites.

顐 ~/.../testing-js/demos 顐 顐 master 鈼 顐 npm run test

> [email protected] test
> jest

 FAIL  src/02-math.test.js
  鈼 should divide for zero

    expect(received).toBeNull()  // Cuando en tu metodo lo pones a dividir entre 0 o devuelve un Nulo.

    Received: Infinity   // Devuelve algo que tiende a infinito.

      23 |
      24 |   const rta = divide(6,0);
    > 25 |   expect(rta).toBeNull();
         |               ^
      26 |
      27 |   const rta2 = divide(7,0);
      28 |   expect(rta2).toBeNull();

      at Object.toBeNull (src/02-math.test.js:25:15)

 PASS  src/01-sum.test.js

Test Suites: 1 failed, 1 passed, 2 total
Tests:       1 failed, 4 passed, 5 total  // Fall贸 una prueba, en este caso hay que hacer refactor.
Snapshots:   0 total
Time:        0.492 s, estimated 1 s
Ran all test suites.

 OUT */
function divide(a, b) {
  // refactor...
  if (b === 0){
    return null;
  }
  // ... refactor
  return a / b;
}

*Solo puse lo que me pareci贸 importante con su comentario resumido.