Lecciones del curso

Testing en React con Jest y testing-library

Instalando Jest en nuestro proyecto
20m
Básicos de Jest
Matchers segunda parte
Números
Arrays
Async
Mocks primera parte
Mocks segunda parte
Mocks tercera parte
Testing sexta parte
Testing séptima parte
Matchers primera parte
Testing en Create React app
Explorando react-testing-library
Explorando testing-library/jest-dom
Detonando eventos con testing-library
Testing con snapshots
11m
Explorando el proyecto
Testeando nuestro primer componente con redux parte 1
Testeando nuestro primer componente con redux parte 2
Testing de actions creators y thunks (acciones asíncronas)
Testing reducers
Mock Avanzado: Peticiones http con msw.js
21m
Mock axios
Router primera parte
Router segunda parte
Router tercera parte
Router cuarta parte

Básicos de jest

En esta lección nos centraremos en explicar los básicos de jest, cubriremos las funciones describe, test e it así como los matchers básicos que podemos encontrar en jest.

Lo primero que tenemos que entender en esta lección es cómo se estructuran las pruebas, tenemos 3 funciones disponibles para ello:

  • describe: Esta función nos permite agrupar todos los tests que pertenezcan a una función, módulo o componente para hacer más sencilla la lectura de las pruebas.

  • test/it: Estas funciones muchas veces nos hacen pensar que son diferentes entre sí y que por ende tienen comportamiento diferente, sin embargo, ambas funciones son usadas para expresar cada una de las pruebas que queremos hacer a nuestro código, la única diferencia radica en la semántica que cada una pueda aportar en conjunto con nuestra descripción del test.

it("should render text"); test("text was rendered correctly");

como podemos ver en este ejemplo, ambas buscan indicar si un texto fue dibujado o no, lo único que cambia es la descripción del test. En otras palabras puedes usar la que prefieras o la que tu equipo de desarrollo defina como estándar.

Una vez dicho esto, vamos a explicar por último quá es lo que tengo que pasarle a cada una de estas funciones. Las 3 reciben los mismos 2 parametros base, el primero es un string describiendo el contenido o la prueba a realizar, el segundo es una función que contendrá el código a ejecutar.

Así de simple.

Código terminado

// app.test.js function calculator({ a, b, operation } = {}) { if (!a || !b) return "datos faltantes"; switch (operation) { case "+": return a + b; case "-": return a - b; case "*": return a * b; case "/": return a / b; default: return a + b; } } describe("testing calculator", () => { test("sum operation", () => { const result = calculator({ a: 2, b: 2, operation: "+" }); expect(result).toBe(4); }); test("subtract operation", () => { const result = calculator({ a: 2, b: 2, operation: "-" }); expect(result).toBe(0); }); test("default", () => { const result = calculator({ a: 2, b: 2 }); expect(result).toBe(4); }); test("return error message if no values", () => { const result = calculator({ a: 2 }); expect(result).toBe("datos faltantes"); }); });

Pueden encontrar el repo en github aquí

spaceman

¿List@ para ver todo el curso? Prepárate porque apenas estamos comenzando 🚀

¡Desbloquea el curso completo y conviértete en un PRO del desarrollo web! 🫶🏻 .