1
00:00:05,930 --> 00:00:10,130
Yo sé que con el título de esta clase, tal vez muchas personas no están interesadas en verlo, pero

2
00:00:10,130 --> 00:00:14,480
la parte del testing es sumamente importante para el desarrollo de aplicaciones y también es sumamente

3
00:00:14,480 --> 00:00:17,570
importante para el desarrollo y creación de nuestras imágenes.

4
00:00:17,570 --> 00:00:17,960
Por qué?

5
00:00:18,230 --> 00:00:22,670
Porque el objetivo es que cuando nosotros creamos nuestra imagen, obviamente esta imagen también debería

6
00:00:22,670 --> 00:00:28,250
estar probada, porque el código fuente que yo estoy usando para crearla debería de pasar mi testing.

7
00:00:28,790 --> 00:00:31,750
Cuál es el objetivo del testing automático de las pruebas automáticas?

8
00:00:31,760 --> 00:00:36,770
Asegurarnos de que nuestro código cumpla los objetivos en las cuales nosotros hemos escrito pruebas

9
00:00:36,770 --> 00:00:37,450
automáticas.

10
00:00:37,460 --> 00:00:41,690
Es decir, podemos probar la ruta crítica, podemos probar ciertas funcionalidades de la aplicación

11
00:00:41,690 --> 00:00:46,790
y el objetivo es nuevamente que si alguna prueba no pasa, no deberíamos de construir la imagen porque

12
00:00:46,790 --> 00:00:47,480
hay un problema.

13
00:00:48,230 --> 00:00:53,120
En pocas palabras, estaríamos acarreando un problema a la versión de producción y no queremos que en

14
00:00:53,120 --> 00:00:55,790
la versión de producción nos demos cuenta de que algo no funcionó bien.

15
00:00:56,270 --> 00:01:00,860
Ese es el objetivo también de las pruebas automáticas, que nosotros por lo menos tengamos cierta capa

16
00:01:00,860 --> 00:01:05,120
de seguridad y saber que nuestra aplicación se comporta como nosotros estamos esperando.

17
00:01:05,880 --> 00:01:10,670
Claro, esto es una aplicación muy sencilla y tampoco no es un curso de testing, pero por lo menos

18
00:01:10,670 --> 00:01:16,340
quiero hacer una prueba sencilla para ver el caso cuando la prueba falla o cuando alguna prueba falla

19
00:01:16,340 --> 00:01:18,530
y cuándo o qué hacer cuando todo pasa bien.

20
00:01:18,560 --> 00:01:23,540
Hay muchas características valiosas que vamos a aprender con esto, o sea, hacer este ejercicio.

21
00:01:23,540 --> 00:01:27,890
Así que aunque más de uno de usted diga no me interesa hacer testing, por favor, acompáñeme y hagan

22
00:01:27,890 --> 00:01:31,610
esto porque vamos a aprender mucho sobre Docker también al respecto.

23
00:01:32,000 --> 00:01:38,840
Ok, una vez dicho eso, comencemos, Yo le voy a pedir que abramos la terminal, o sea de Windows.

24
00:01:38,850 --> 00:01:42,140
Yo como bueno, imaginarán, esto es otro día.

25
00:01:42,140 --> 00:01:46,340
Yo estoy grabando esta clase o este curso no lo grabo todo en un día, entonces voy a hacer un cd a

26
00:01:46,340 --> 00:01:49,970
la carpeta de nuestro proyecto de nuevo Chrome Ticker.

27
00:01:50,570 --> 00:01:52,790
También lo pueden hacer con la terminal integrada Visual Studio.

28
00:01:53,000 --> 00:01:57,650
No hay problema, pero nuevamente quiero hacerlo de esta de este punto para que se mire claramente.

29
00:01:57,650 --> 00:02:03,140
Si ustedes hacen un DIR o LSE van a ver que aquí tenemos el Docker, Phil, el package JSON y todo lo

30
00:02:03,140 --> 00:02:03,500
demás.

31
00:02:04,790 --> 00:02:13,160
Aquí vamos a escribir el siguiente comando npm y de instalar vamos a instalar guest espacio menos menos

32
00:02:13,730 --> 00:02:14,690
menos dev.

33
00:02:15,200 --> 00:02:18,950
Es decir, quiero hacer la instalación de este paquete YES que nos va a ayudar a hacer el testing en

34
00:02:18,950 --> 00:02:22,400
nuestra aplicación y es una dependencia de desarrollo.

35
00:02:23,360 --> 00:02:31,330
Instala 29 paquetes, bueno, 279 paquetes y hace muchas cosas en nuestros módulos de NOD.

36
00:02:31,460 --> 00:02:36,350
Entonces si yo regreso a Visual Studio Code y abro el paquete de JSON, van a ver que aquí tenemos las

37
00:02:36,590 --> 00:02:37,810
dependencias de YES.

38
00:02:37,820 --> 00:02:41,660
Si ustedes por alguna razón lo instalaron en las dependencias normales, vuelvan a ejecutar el comando,

39
00:02:41,660 --> 00:02:44,150
pero poniendo el seis dev para que lo coloque aquí.

40
00:02:44,720 --> 00:02:47,030
Y realmente ustedes no quieren cambiar las dependencias manualmente?

41
00:02:47,480 --> 00:02:47,750
Ok.

42
00:02:48,110 --> 00:02:53,840
Si analizamos los módulos de nodos van a ver que ahora hay un montón de archivos nuevos.

43
00:02:53,840 --> 00:02:58,760
Hay un montón de archivos que todo esto lo utiliza de una X o y razón.

44
00:02:59,030 --> 00:03:02,030
La parte de West Machine no va decir Bueno, y esto y este montón de.

45
00:03:02,100 --> 00:03:02,900
De dónde salió?

46
00:03:02,900 --> 00:03:03,460
Cómo lo manejo?

47
00:03:03,470 --> 00:03:04,760
Ustedes no se preocupen de esto.

48
00:03:05,060 --> 00:03:07,590
Y sabe cuáles dependencias son las que necesita?

49
00:03:07,610 --> 00:03:12,860
Ok, pero nuevamente son dependencias de desarrollo que no deberían de ir a el build de producción,

50
00:03:12,860 --> 00:03:17,090
pero ya eso será un tema de otra clase que vamos a cubrir en esta sección, así que no se preocupen,

51
00:03:17,660 --> 00:03:22,640
voy a refactorizar mi código un poco para que sea más fácil de probar, porque así es algo complicado

52
00:03:22,640 --> 00:03:27,170
y la verdad es que no quiero hacer un curso de testing propiamente, entonces lo que voy a hacer es

53
00:03:27,170 --> 00:03:33,260
crearme un nuevo, una nueva carpeta que se llama Task o task en plural, y adentro voy a crearme un

54
00:03:33,260 --> 00:03:34,040
nuevo archivo.

55
00:03:34,580 --> 00:03:35,720
Hagamos esto un poco más grande.

56
00:03:35,900 --> 00:03:41,390
Y este nuevo archivo se llama como Sink db js, el cual va a ser la función que yo quiero ejecutar para

57
00:03:41,390 --> 00:03:46,310
sincronizar mi base de datos o el proceso automático o uno del X cantidad de procesos automáticos,

58
00:03:46,910 --> 00:03:52,100
van a copiarse la función que tenemos aquí desde estos paréntesis hasta aquí abajo, control C y voy

59
00:03:52,100 --> 00:03:54,860
a crearlo por acá constante, voy a ponerle Sink.

60
00:03:54,860 --> 00:03:59,020
DB Va a ser igual a una función de flecha, Abro y cierro llaves y aquí dentro saben qué?

61
00:03:59,030 --> 00:04:04,310
Mejor solo copiemos lo que tenemos acá, copien esto de aquí solo el contenido de la función y la pego,

62
00:04:04,670 --> 00:04:08,210
ocupo times, voy a crearme la variable times, va a ser igual a cero.

63
00:04:09,390 --> 00:04:12,740
Y adicionalmente aquí voy a retornar Things.

64
00:04:12,870 --> 00:04:18,540
Es decir, cuando yo hago el Sync TV y lo mandé llamar, voy a retornar la cantidad de veces que se

65
00:04:18,540 --> 00:04:19,860
ha sincronizado el proceso.

66
00:04:20,220 --> 00:04:23,790
Como esta es una función que yo voy a ocupar en otro archivo y me encuentro una aplicación en OUT,

67
00:04:23,790 --> 00:04:27,210
vamos a hacerlo así Modulo export abren y cierran llaves.

68
00:04:27,510 --> 00:04:31,880
No se les olvide poner el igual y exportamos la función de Sync Divi.

69
00:04:31,890 --> 00:04:35,970
Hay varias formas de hacer esto, pero lo voy a hacer de esta manera para no tener que importar nada

70
00:04:35,970 --> 00:04:36,870
más en mi proyecto.

71
00:04:37,110 --> 00:04:39,160
Entonces TV es la función que voy a llamar.

72
00:04:39,180 --> 00:04:46,320
Regresemos al app JS, borremos times, borremos todo el cuerpo de esta función y toda la función.

73
00:04:46,320 --> 00:04:48,540
Y aquí voy a mandar a llamar Sink DB.

74
00:04:48,600 --> 00:04:54,300
Nada más asegúrese de escribir esta importación porque quiero importar la función de Sync TV que viene

75
00:04:54,300 --> 00:04:58,860
de Task sin DB y este inicio de la aplicación lo puedo colocar aquí arriba.

76
00:04:59,360 --> 00:05:00,690
Ok, voy a grabar los cambios.

77
00:05:00,690 --> 00:05:03,360
No es nada abrupto lo que yo hice.

78
00:05:03,840 --> 00:05:05,310
Voy a regresar y esto no tiene nada que ver.

79
00:05:05,310 --> 00:05:09,270
Ya tampoco voy a venir aquí y escribir npm run.

80
00:05:09,540 --> 00:05:11,190
No, nada más npm, start.

81
00:05:12,000 --> 00:05:14,670
Presionamos enter y van a ver que todo sigue funcionando exactamente igual.

82
00:05:14,700 --> 00:05:17,850
Inicio de la aplicación y cada segundos cinco, diez, 15, 20.

83
00:05:18,660 --> 00:05:19,710
Tenemos esta.

84
00:05:20,220 --> 00:05:21,030
Este resultado.

85
00:05:21,090 --> 00:05:25,950
Ok, voy a cancelarlo y si ustedes se les queda pegado, ustedes ya saben, pueden eliminar forzosamente

86
00:05:25,950 --> 00:05:26,670
ese contenedor.

87
00:05:27,270 --> 00:05:28,170
Miren, regresemos aquí.

88
00:05:28,170 --> 00:05:29,760
Todavía no hemos hecho nada de las pruebas.

89
00:05:29,760 --> 00:05:30,960
Cuál es el objetivo de las pruebas?

90
00:05:30,990 --> 00:05:35,430
Digamos que lo único que yo voy a querer probar es que si yo mando a llamar esta función, yo estoy

91
00:05:35,430 --> 00:05:38,400
esperando que me regrese un valor de Time.

92
00:05:38,520 --> 00:05:42,450
Si yo lo llamo dos veces, entonces estaría esperando que este valor sea dos, por ejemplo.

93
00:05:42,450 --> 00:05:44,340
Entonces hagamos una prueba súper sencilla.

94
00:05:44,730 --> 00:05:48,960
Usualmente la parte de testing está en su carpeta independiente que se llama test y en la cual voy a

95
00:05:48,960 --> 00:05:51,860
tener la misma estructura de archivos que yo tengo aquí en mi proyecto.

96
00:05:51,870 --> 00:05:57,780
Técnicamente deberíamos de crear un source para mantener esto más ordenado, pero no, olvídense de

97
00:05:57,780 --> 00:05:57,900
eso.

98
00:05:57,900 --> 00:05:58,350
Por ahora.

99
00:05:58,800 --> 00:06:04,270
Dentro de la carpeta test voy a crear otra carpeta que se llama Task Task y dentro de la carpeta Task

100
00:06:04,320 --> 00:06:09,990
voy a crearme un archivo que se llama exactamente igual a este, solo que va a tener la extensión punto

101
00:06:10,100 --> 00:06:10,590
text.

102
00:06:11,740 --> 00:06:17,140
Punto test js y van a ver que el iconito cambia como un tubo de ensayo ahí bien bonito.

103
00:06:17,720 --> 00:06:22,030
Entonces, el objetivo de esta parte de mi testing es que yo pueda probar algo.

104
00:06:22,030 --> 00:06:27,700
Yo voy a probar si esta función la llamo dos veces, que el segundo balanceados hace nada más.

105
00:06:28,450 --> 00:06:30,120
Entonces podemos escribir de scripts.

106
00:06:30,910 --> 00:06:33,820
Voy a colocar pruebas en sync.

107
00:06:34,150 --> 00:06:35,560
Voy a poner aquí Sync Divi.

108
00:06:36,460 --> 00:06:37,810
Luego tenemos esa función.

109
00:06:39,120 --> 00:06:43,320
Espero que esto no sea complicado de seguir para las personas que no son familiares con JavaScript.

110
00:06:43,320 --> 00:06:44,880
Pero no se preocupen mucho.

111
00:06:45,390 --> 00:06:46,080
Y aquí voy a escribir.

112
00:06:46,110 --> 00:06:50,670
Debe de ejecutar el proceso dos veces, por ejemplo.

113
00:06:51,540 --> 00:06:52,320
Tenemos esta función.

114
00:06:52,320 --> 00:06:54,760
Y aquí adentro, voy a mandar a llamar el zinc.

115
00:06:54,780 --> 00:06:56,580
Debe Asegúrese de importar zinc.

116
00:06:56,580 --> 00:06:57,630
Debe de s paz.

117
00:06:58,350 --> 00:06:58,920
Se intimide.

118
00:06:58,920 --> 00:06:59,370
C paz.

119
00:07:00,410 --> 00:07:01,610
Lo mandó llamar una vez.

120
00:07:02,240 --> 00:07:05,150
Y yo sé que esta función regresa un número.

121
00:07:05,150 --> 00:07:06,560
Entonces puedo almacenar ese número.

122
00:07:06,560 --> 00:07:09,230
Por ejemplo, Constante Times va a ser igual a Div.

123
00:07:09,650 --> 00:07:14,000
Si yo hago el log de Times debería de ver en consola el número.

124
00:07:14,000 --> 00:07:20,630
Voy a poner C, llamo y voy a colocar una coma con Times.

125
00:07:21,710 --> 00:07:25,520
Porque básicamente lo que estoy haciendo es crearme un agrupado de mis pruebas y luego hago una prueba

126
00:07:25,520 --> 00:07:27,230
que se dice que debe ejecutarse dos veces.

127
00:07:27,230 --> 00:07:31,670
Todavía no se está ejecutando dos veces, pero lo que quiero es ejecutar esta prueba para ejecutar todo

128
00:07:31,670 --> 00:07:35,420
mi test suit, que así se conocería como todo el conjunto de las pruebas automáticas.

129
00:07:36,590 --> 00:07:41,060
Podemos subir un poco y aquí donde tenemos los scripts del test, me dice que no hay nada de las pruebas.

130
00:07:41,540 --> 00:07:42,800
Entonces voy a borrar esto.

131
00:07:44,130 --> 00:07:46,770
Y escribamos nada más.

132
00:07:46,800 --> 00:07:47,610
Eso es todo.

133
00:07:48,290 --> 00:07:49,170
Graves en los campos.

134
00:07:49,200 --> 00:07:50,610
Regresemos a nuestra terminal.

135
00:07:51,060 --> 00:07:54,810
Y si escribo npm, run test, me van a preguntar.

136
00:07:54,810 --> 00:07:56,550
Y por qué con el esta no escribimos run?

137
00:07:56,550 --> 00:07:58,050
Porque es un comando especial.

138
00:07:58,080 --> 00:08:00,930
Usualmente siempre usamos el run, npm, run, test.

139
00:08:00,930 --> 00:08:05,670
Presionen enter y aquí van a ver que tenemos un solo que dice tick.

140
00:08:06,960 --> 00:08:08,970
Cada múltiplo de cinco se imprimió.

141
00:08:08,970 --> 00:08:11,160
Se llamó uno y es mi propio testing.

142
00:08:11,490 --> 00:08:16,410
Esto es lo de la función y esto es lo del propio test y eso está bien y me dice que la prueba pasó,

143
00:08:16,410 --> 00:08:20,880
etc y todo pasó bien porque nosotros no hicimos ningún ninguna.

144
00:08:21,510 --> 00:08:23,190
No estaba esperando nada de esta prueba.

145
00:08:24,210 --> 00:08:28,530
Recuerden, si ustedes quieren saber más sobre testing, tengo muchos cursos al respecto de esto, especialmente

146
00:08:28,530 --> 00:08:29,740
los que dicen de ser experto.

147
00:08:29,760 --> 00:08:31,800
Usualmente todos estos vienen con parte de testing.

148
00:08:32,430 --> 00:08:37,920
En fin, para no hacer muy largo el video voy a escribir aquí Expect expect paréntesis.

149
00:08:37,920 --> 00:08:42,760
Yo estaría esperando por ejemplo que times el valor de Thames TV.

150
00:08:42,780 --> 00:08:48,030
Por favor escríbanlo exactamente igual con la V mayúscula por ejemplo, que sea dos punto y coma.

151
00:08:48,340 --> 00:08:52,470
Entonces yo estoy esperando que Times sea dos, pero no tiene sentido porque la primera vez y la única

152
00:08:52,470 --> 00:08:55,280
vez que lo estoy ejecutando, entonces debería ser uno.

153
00:08:55,320 --> 00:08:59,840
Y luego estoy diciéndole que espere que dos sea igual a uno, sea igual a dos.

154
00:08:59,850 --> 00:09:02,100
Esto no tiene sentido y no va a pasar la prueba.

155
00:09:02,370 --> 00:09:07,770
Si yo intento ejecutar nuevamente el npm run test, van a notar que va a fallar y me dice prueba.

156
00:09:07,770 --> 00:09:09,150
En fin, de V falló.

157
00:09:09,150 --> 00:09:12,840
Debe ejecutar el proceso dos veces y aquí tenemos que estaba esperando un dos.

158
00:09:12,840 --> 00:09:14,400
Se recibió un uno y el error está aquí.

159
00:09:14,760 --> 00:09:18,180
Entonces esta prueba falla al fallar una prueba.

160
00:09:18,450 --> 00:09:20,340
Esto lanza un error por decirlo así.

161
00:09:20,550 --> 00:09:26,940
Y cuando yo mandé a llamar este proceso del testing en alguna parte de mi Docker Field, al lanzar este

162
00:09:26,940 --> 00:09:32,160
error del testing porque una prueba no pasa, no se va a generar la imagen, lo cual es algo que nosotros

163
00:09:32,160 --> 00:09:33,120
ocupamos hacer.

164
00:09:33,570 --> 00:09:36,060
Nuevamente ocupamos hacer esta parte del testing.

165
00:09:36,600 --> 00:09:41,400
Entonces, para pasar la prueba, obviamente lo que voy a hacer es voy, voy a volver a mandar, a llamar

166
00:09:41,790 --> 00:09:45,930
de B una una primera vez, luego lo voy a volver a llamar aquí.

167
00:09:46,140 --> 00:09:50,250
Entonces la segunda vez que lo llamo aquí, thanks y debería ser dos.

168
00:09:50,490 --> 00:09:56,340
Entonces voy a grabar los cambios, voy a regresar a la terminal, voy a volver a ejecutar el test Swift

169
00:09:56,520 --> 00:09:58,580
y van a ver que todo pasa sin ningún problema.

170
00:09:58,590 --> 00:10:00,780
Tenemos muchos console logs por aquí.

171
00:10:01,020 --> 00:10:01,130
Ok?

172
00:10:01,200 --> 00:10:04,890
Tenemos muchos console docs, pero digamos que esos los vamos a dejar por ahí.

173
00:10:04,890 --> 00:10:09,550
Técnicamente no deberíamos dejar esos console docs, pero los voy a dejar ahí solo por bueno, tal vez

174
00:10:09,570 --> 00:10:14,520
este de aquí se lo puedo quitar, pero los demás los voy a dejar porque me interesa que miremos esas

175
00:10:14,520 --> 00:10:21,930
partes, me interesa que se vea que se está llamando la función propiamente y esto es una breve, brevísima

176
00:10:21,930 --> 00:10:27,810
prueba automática, la cual nos va a servir a nosotros para determinar si algo falla, que no construya

177
00:10:27,810 --> 00:10:30,450
la imagen y si todo lo hace bien, construye la imagen.

178
00:10:30,450 --> 00:10:33,150
Y este este paso es sumamente importante.

179
00:10:33,540 --> 00:10:39,140
Por ahora dejémoslo así cerremos, cerremos todo, cerremos, cerremos el app, cerremos el Docker field

180
00:10:39,480 --> 00:10:45,330
y en la próxima clase vamos a incorporar el proceso de pruebas automáticas en la construcción de nuestra

181
00:10:45,330 --> 00:10:45,780
imagen.

182
00:10:46,080 --> 00:10:48,330
Y si la prueba falla, que no construye nada.

183
00:10:48,330 --> 00:10:53,340
Pero si todo sale bien, entonces que continuemos y esto va a ser muy educativo.

184
00:10:53,340 --> 00:10:58,050
En la parte que falte, no tanto para la parte no, porque recuerden no es un curso de Node, no es

185
00:10:58,050 --> 00:11:03,060
un curso de testing, pero esos son conocimientos básicos que ustedes van a ocupar para construir cualquier

186
00:11:03,060 --> 00:11:04,050
tipo de aplicación.

187
00:11:04,230 --> 00:11:09,030
Ustedes pueden hacer testing en Java en Cesar, pueden hacerlo en cualquier otra tecnología.

188
00:11:09,510 --> 00:11:09,870
Dejémoslo.

189
00:11:09,870 --> 00:11:12,060
Está ese punto y lo veo en la próxima clase.
