Hola. Vamos a comenzar este nuevo módulo trabajando con una herramienta de "testing". Quizás te preguntes dónde estaba el "testing" en el programa del curso. Podemos decir que viene como agregado a lo que es el desarrollo del "backend", ya que, hoy en dÃa, todo el tema del "testing" es muy relevante, muy necesario, se usa en todos los proyectos y está al alcance de cualquier desarrollador. Asà que, si bien este no es un curso que va a hacer foco en el "testing", para eso habrÃa que dedicar un curso similar a este pero sólo de estrategias de testing, y no tenemos el tiempo para hacerlo, te voy a presentar una herramienta que es bastante sencilla de usar. Tiene ciertas cositas a que prestar atención, que son las que vamos a ver en algunos pocos videos de aquà en adelante. Pero, te va a facilitar mucho el desarrollo, más que nada porque te va a dar una noción concreta de avance en el proyecto, dado que vamos a poder ir creando algunos test, algunas pruebas automáticas, es decir, que las vamos a programar. Y una vez que a ese test lo resolvamos, es decir, que programemos el código que haga que pase ese test, ya vamos a tener garantÃa de que hemos hecho alguna funcionalidad, que está validada por lo que estamos testeando y probando. Quizás fue, un poco, un engrudo de palabras pero, en resumen, estos test que vamos a hacer van a chequear que nuestro código funcione, son automáticos, nos va a quedar, mientras no lo eliminemos, nos queda para siempre, y realmente se va a notar la calidad en el desarrollo del proyecto. Vamos a usar esta herramienta, que es Jasmine, y enseguida comenzamos a configurarla. Vas a ver que, si googleás, vas a encontrar muchas herramientas de "testing". Nosotros utilizamos ésta. No es que sea la mejor, necesariamente, pero sà es bastante minimalista, que es algo que yo, personalmente, prefiero a la hora de usar una herramienta de este estilo. Acá estamos en nuestro proyecto. Voy a seguir la guÃa para que vos puedas hacer lo mismo de tu parte. Instalemos globalmente Jasmine, y luego la vamos a inicializar, o la podemos poner directamente, como vos quieras, yo ya la tengo global, en el proyecto como parte del desarrollo. Asà que hacemos "npm install jasmine -- save-dev". Acá ya vemos que aparece como desarrollo la versión 3.3.1. Luego tenemos que hacer el "Init", esto no lo hacemos con todas las herramientas. Aquà sà lo tenemos que hacer porque vas a ver que nos va a agregar algunos archivos de configuración, necesarios para esta tarea, este proyecto. Vamos a instalar, nuevamente, Jasmine Global, por las dudas. Instalamos Global, ya que Jasmine, en este caso, estarÃa corriendo dentro de la consola, adentro de la terminal. Al instalarlo sólo en desarrollo, nos quedó como parte del proyecto y no reconocÃa este comando. AquÃ, instalamos Global. Podemos utilizar el comando, como es NPM, en este caso, y le hacemos el "Init". Lo que nos agregó fue esta carpetita de "Spec" con un Jasmine.json que, no te voy a aburrir pero, básicamente, aquà configura ciertos datos de la herramienta: cuál es la carpeta donde se van a correr los Spec, que se le dice a este "framework" de "testing" que utiliza lo que se conoce como "Behavior-Driven JavaScript", "Programming", que básicamente es "unit testing". Lo estoy simplificando mucho, pero es "unit testing", orientado de alguna manera al usuario y siguiendo lo que es el comportamiento, no tanto la funcionalidad técnica, sino hacemos foco, más que nada, en el comportamiento, en qué queremos que haga, no en el cómo. Hasta ahà es un principio general que vamos a seguir en todos los test. Entonces, a esos tests les decimos "Spec". Y, aquÃ, lo que se hace es especificar cuál es el directorio, cuál es la estructura o el tipo de archivo que ver dentro de esos directorios que va a tener los "Spec", si vamos a tener "helpers" que, de hecho, vamos a agregar alguno, y que ejecute los test en "random". Acá le voy a poner "false", simplemente porque, al principio, nos conviene que siga el orden en el que lo vayamos escribiendo. Después, probablemente, si tuviéramos una herramienta de "continuous integration", o sea algo que genera versiones automáticas, sà le pondrÃamos un "random" para asegurarnos de que no hay una relación directa en la ejecución de los test, es decir, que se tenga que correr uno antes que otro. Y, al hacerlo "random", de alguna manera, si bien no soy muy partidario de introducir aleatoriedad en los tests, de alguna manera, lo que nos va a permitir es garantizar eso, que no hay una relación directa, o sà o sà tenemos que garantizar un orden de ejecución de los test. Es decir, que cada test se puede ejecutar de forma independiente y debe funcionar. Si no es asÃ, quiere decir que hay algún acoplamiento entre los test, una relación entre ellos, que no nos va a garantizar buenos resultados. ¿Qué más vamos a tener que hacer? Esto es para inicializarlo, si lo hemos instalado de forma local. Ya lo hicimos global, asà que no pasa nada. Esto, si querés ver algunos ejemplos, no lo voy a hacer, ya que lo vamos a hacer por nuestra cuenta. Y después, simplemente, lo que vamos a hacer es agregar como una tarea en el "package.json" que sea de test. AquÃ, lo que vamos a hacer, es Jasmine, directamente. Ya estamos en condiciones de empezar a ejecutar los tests. AquÃ, siempre que tenés un ejemplo, vas a ver que hay varias customizaciones más que podés hacer. No te preocupes, no vamos a usar casi ninguna. Simplemente una sola, que ya vas a ver en unos minutitos, nomás. Comencemos a testear nuestro modelo.