Es momento de incorporar el testing como un paso en la construcción de nuestra imagen.
Pero antes de hacerlo quiero mostrarles algo, porque es un error que nos va a aparecer y quiero que
ustedes sepan porque sale.
Vamos a venirnos a nuestra carpeta de test y renombre este archivo.
Vamos a ponerle otro nombre aquí.
Y este nombre va a ser cualquier cosa, pero sin el test, cualquier otro nombre, cualquier o cualquier
otro nombre no importa.
Pero quítenle la palabra test y presionen Enter.
Ok.
Simplemente quítenle el nombre de test.
Regresemos a la terminal.
Limpiemos esto.
NPM, npm, run, test enter.
Y nos va a lanzar un error.
O se ve como un warning, Pero esto va a ser un error.
Y me dice que no encontró ninguna prueba.
Es decir, no encontró ningún archivo que tenga la extensión con el nombre expect o test en el proyecto.
Y eso está bien.
Y buscó cinco módulos, digamos.
Perfecto.
Pero no lo encontró.
Porque no lo encontró.
Por qué?
Yo le cambié el nombre Test.
Ok, ahora si yo escribo nuevamente el test y vuelvo a intentarlo, todo va a funcionar porque logré
encontrar el archivo etc Nada sorprendente no?
Y es importante que ustedes sepan por el cual ese error aparecio, porque lo vamos a ver en unos momentos.
Cerremos la parte del testing y regresemos a nuestro Docker Field.
Recuerden en qué momento nosotros ocuparíamos llamar el testing.
Vamos a ver, primero montamos nuestro Linux con la versión bueno, montamos un Linux Alpine 3.16,
la versión de Snow 19.
Ya estamos ahí, hacemos el cd a la carpeta de app, copiamos el paquete JSON y lo copiamos dentro del
app.
Instalamos las dependencias y aquí copiamos el app JS y lo ponemos dentro de la carpeta app.
Tal vez más de uno va a decir bueno, tal vez después de copiar esto, en donde nosotros podemos ejecutar
la parte del testing, tal vez aquí otra vez, alguien va a decirlo.
Bueno, tal vez después de que hacemos el npm install, pues todavía no, porque nos hace falta copiar
cosas, entonces podemos ejecutar ese comando de ese comando del testing, el npm run test.
Vaya, uno podría pensar lo haríamos con el cmd?
Técnicamente, si ustedes quieren hacerlo, podrían hacerlo para que solo pase las pruebas.
Sería una una imagen hecha solo para probar el código, pero es exactamente este mismo comando.
Entonces voy a poner aquí realizar testing, npm, run, test.
Y este comando debería ejecutar la prueba.
Y básicamente, esto sería todo entre comillas.
Y yo sé que más de una persona que ya ha trabajado con Docker Field sabe que esto se puede optimizar
mucho.
Y ya lo vamos a hacer por ahora.
Por ahora nuevamente quiero que caminemos, que comprendamos cada paso antes de salir corriendo y esto
va a ser muy, muy, muy educativo.
Ya van a ver.
Regresemos a nuestra consola y podemos hacer un Docker Image LS para ver el nombre de nuestro última
imagen que creamos que es Query slash ticker y el tag es Castor.
Ahora voy a crear un mapache no?
Entonces nuevamente Docker que vale espacio?
Qué nombre le quiero poner?
Voy a poner el tag, el mismo tag que nosotros tenemos ahí, pero le voy a poner también mapache.
Este va a ser el tag.
También es conveniente que creemos el aire y lo demás, pero bueno, este va a ser mapache.
Punto.
Para que el locker exactamente en este pack donde me encuentro presione en control Enter y esto va a
empezar a realizar la creación de nuestra imagen.
Hay muchas partes que ya van a estar en caché porque no han cambiado, pero si detectó que hubo cambios
en el paquete JSON, entonces eso va a volver a ser el npm show y todo lo demás.
Y noten que aquí dispara un error en el paso seis de seis que es npm run test.
El paso seis es el que acabamos de agregar y falló y me dice Cron ticker yes falló, no encontró ninguna
prueba.
Que raro van a decir más de uno porque yo estoy viendo mi prueba.
Aquí está la prueba.
Pero si analizamos exactamente qué fue lo que copiamos, no copiamos el testing, es decir, copiamos
el package json, copiamos este archivo, sea este aquí lo copiamos y lo pegamos en el app, luego copiamos
el PPP JS y lo pegamos aquí.
Y eso es todo.
Esto es todo lo que movimos.
Pero recuerde que también refactorizar nuestro código y tenemos nuestras funciones aquí en el Task,
es decir, esta carpeta también tenemos que moverla y tenemos que mover también el testing para que
se pueda realizar aquí adentro.
Entonces más de uno podría decir ah, bueno, entonces tenemos que empezar a escribir cada uno de los
directorios y cada uno de los paths.
Técnicamente sí.
Pero hay varias maneras de hacer esto en un solo paso.
Por ejemplo, yo puedo decirle que copie todo punto del destino y lo pegue en el working directory,
ok?
Le estoy diciendo copie todo lo que está en este pack y lo pegue en el working directory.
Esto también trae otro tipo de problemas.
No es la solución, esto lo va a solventar, pero también va a acarrear otros problemas como qué problemas
va a traer?
El problema de que también voy a copiar los módulos de Node.
Es decir, voy a copiar estos módulos de no voy a, por decirlo así, transferir todo el file system
que tengo aquí.
Todo este proyecto lo voy a mover.
Eso también incluye el Docker.
Phil va a incluir el testing, va a crear el módulo de Note, va a incluir si ustedes tienen una, un
repositorio, es decir, una carpeta invisible, también se va a ir a esa carpeta, va a copiar tu repositorio,
va a copiar literalmente todo y ya vamos a revisar eso muy pronto.
Pero bueno, copiamos eso y ahora todo debería de funcionar.
Vamos a vamos a ver qué pasa.
Flecha direccional arriba, presionamos Enter, empieza a ejecutar las pruebas.
Todo pasa y construyó nuestra imagen.
Mapache Está bien si a ustedes les tiró algún error por los módulos de nuevo, no se preocupen.
De todos modos, tenemos que hacer una corrección aquí.
Pero construyó la imagen y aquí.
Lo que significa es que nuestro testing fue incorporado en el proceso de construcción de la misma.
Es decir, se montó.
No empezó a ejecutar el npm run test, pasaron las pruebas y listo.
Pero qué pasa si nos vamos a la carpeta de pruebas y comenten este de aquí?
Comenten esta línea y graben los cambios?
Es decir, nosotros estamos esperando que el proceso se ejecute dos veces, pero solo lo estamos ejecutando
una vez gánense los cambios, regresemos a la terminal Flecha direccional arriba y tratemos de ejecutar
esta construcción de nuevo.
Y aquí tenemos el error.
Note que todo lo demás está en caché.
Eso funciona muy rápido.
Voy a venir aquí con ticket y tenemos el error.
Aquí hay varios logs de lo que sucedió.
Y aquí tenemos que se esperaba dos.
Se recibió uno.
El error está aquí.
Tenemos pruebas en Sync de V.
Debe ejecutar el proceso dos veces.
Aquí está el error que falló.
Debe ejecutar procesos, veces está la prueba que falló, etcétera, etc, y no construyó mi imagen.
Exit Code uno no salió correctamente, no se construyó la nueva imagen.
Que pasaría aquí?
Tenemos que regresar a nuestro testing, ver qué pasó con el código o ver qué pasó en la prueba.
Corregir ya sea el código o la prueba y nuevamente intentar hacer el Bill de mi aplicación.
Y ahora al volverlo a hacer se genera todo lo demás, porque noten que todo lo demás estaba en caché
y realmente detectó que no hubo muchos cambios y ya teníamos nuestra nueva imagen.
Mapache.
Entonces en este caso To get y Match LS Y ahí tenemos nuestra versión anterior que fue Castor y este
es Mapache que fue creado hace unos cuantos minutos, pero también quiero que preste mucha atención
en algo.
La imagen creció exponencialmente, creció como unos 70 megas en su contenido.
Vamos a hablar de esto, de ese peso, de lo que por qué se incrementó tanto en la próxima clase.