Es una tecnica de desarrollo que se enfoca en crear los test antes del codigo de produccion
Se basa en tomar los requerimientos o casos de uso al desarrollar una aplicación. Recrear estos requerimientos por medio de pruebas, posteriormente pasar estas pruebas al codigo de la funcionalidad.
El Flujo de TDD:
- (RED) Crear un test que falle, significa que en principio al crear el test este debe fallar.
- (GREEN) Desarrollar la funcionalidad que cumpla el test y esta vez el test si pase o no falle. Es importante desarrollar lo minimo necesario para que el Test pase.
- (ORANGE) En esta face detectamos codigo que se pueda mejorar, y solventar malas practicas. Y realizamos el refactor del codigo.
Metodo AAA Arrange ( Arreglar ) Act ( Actuar ) Assert ( Afirmar )
Preparamos el estado incial del sujeto a probar, (Inicializar variables, importaciones necesarias).
Aplicamos acciones o estímulos al sujeto de prueba, (Llamamos metodos, simulamos click, realizar las acciones sobre el paso anterior).
Observar el comportamiento resultante de las acciones anteriores.
- No son pérdida de tiempo
PRUEBAS UNITARIAS
Enfocadas a pequeñas funcionalidades de la aplicación
- Fáciles de escribir
- Fáciles de leer
- Confiables
- Rápidas
- Principalmente unitarias
PRUEBAS DE INTEGRACIÓN
Enfocadas en cómo reaccionan varias piezas en conjunto
- Fáciles de escribir
- Fáciles de leer
- Confiables
- Rápidas
- Principalmente unitarias
-
Hacen que mi aplicación no tenga errores - los programadores nos podemos equivicar
-
Las pruebas no pueden fallar - Se pueden hacer pruebas que arrojen falsos positivos o falsos negativos.
-
Hacen más lenta mi aplicación - falso porque las pruebas corren en la maquina de desarrollo.
-
Es una perdida de tiempo - Solo se podria considerar una perdida de tiempo si hacemos pruebas de cosas que no tienen sentido probar. Como por ejemplo una libreria que importemos en nuestro proyecto.
-
Hay que probar todo - No es necesario porque podria tomarnos el mismo tiempo que nos tomo hacer la aplicación, incluso hasta más.
yarn add -D @types/jest
Caracteristicas:
Es un framework de testing para Javascript.
- Creado por Facebook - Actualmente es mantenido por facebook y por la comunidad
- Javscript Testing Framework (Es agnostico al framework)
- Zero configuration - Uno de los pilares de Jest es que no posea tantas configuraciones y sea facil de usar. Esto no significa que no pueda personalizarlo y configurarlo.
- Snapshots - Significa que nos brinda la estructura de un componente en cierto momento.
- Isolated - Nos permite ejecutar los test de forma independientes unos de otros y tambien de forma paralela.
- Code Coverage Información que nos provee Jest, sin la necesidad de instalar otras dependencias. Con una bandera especial (--coverage) sobre que lineas de nuestro codigo esta siendo cubiertas por el Test.
- Easy Mocking Es posible crear Objetos Mock, que son una manera de reemplazar una implementación con un objeto replica fake.