Bien, continuamos con la clase Test.
Vamos a crear primero una instancia del repository.
Luego el examen servis y lo pasamos por el constructor.
El tipo del repository es más genérico de la interfaz examen repositorio repositorio igual new y crea
una instancia, pero la instancia implemente esta.
Acá está el repositorio.
Perfecto.
Ahí tenemos el objeto.
Luego vamos a tener examen servis.
Lo mismo, pero la interfaz.
Se llama estar Dinama Servis, igual ni un examen servis implementas y le pasamos por constructor el
repositorio repository perfecto.
Ahí tenemos listo nuestro contexto.
Qué vamos a probar entonces?
Ahora invocamos el método, recuerden que devuelve un examen.
El método cervesa tenga que importar.
Acá con al enter importamos la clase servis.
Punto fin, examen por nombre.
Le pasamos un nombre, por ejemplo, no sé matemáticas.
Se acuerdan?
Mismo nombre que existe.
Revisamos por acá.
Examen Repository implemente de hecho con control TAF.
Acá lo buscamos, lo tenemos acá.
Examen Repository, implemento matemáticas.
Incluso lo pudieron poner incluso con acento acá.
Matemáticas.
Y acá también en la clase texto.
Matemáticas que sea idéntico.
Entonces bueno, vamos a probar con Acechas, Sert, not null.
Vamos a probar que existe el objeto examen, que al menos lo he encontrado.
Luego a CERT.
Y cuál es el valor esperado?
Vamos a aprobar matemática.
Tenía Leydi cinco entonces cinco coma examen.
Punto.
Bien se.
Pero este devuelve un tipo lonco cierto.
Entonces incluso podemos colocar acá 5L y lo comparamos con el kit Heidy que también es del tipo lonco.
Se fijan del tipo blanco perfecta a hacer equals.
Pero lo esperado.
Matemáticas
ya real.
Punto.
Qué nombre se fijan hasta momento solamente.
Tan pronto como Johnny ni siquiera entró en nada.
Moquitos.
Y eso que quiero ver por ahora.
Después vamos a entrar un poquito y vamos a ver la diferencia.
Recuerden que implementamos el repository con datos de ejemplo de forma manual.
Creamos una simulación de lo que podría ser un repositorio.
Entonces vamos a levantar control cheff F10.
Y pasa la prueba.
Se encuentra el objeto matemática en nombre Eladia 5, se que está todo funcionando bien.
Ahora, qué pasa si quiero probar cuando devuelve una lista vacía?
Dice que es repository.
Esta me repositor implemente en vez de devolver esto, devuelve una lista vacía.
Cuál sería el problema que tenemos?
Y acá se complica un poco el tema para realizar nuestro preguntaria acá tenemos que empezar a modificar
nuestra implementación.
Se fijan?
En vez de devolver esto tendríamos que devolver un array vacío y tenemos que empezar a utilizar.
If condición es pasar parámetro.
En el método se fijan a medida que queramos agregar un nuevo contexto, prueba con nuevos datos de entrada
y salida.
Esto se vuelve muy complejo de manejar y de probar.
Por ejemplo.
En vez de devolver esto.
Esto.
Lo de comentar.
Por ejemplo.
Y acá vamos a colocar en vez de raíz.
Bueno, en realidad voy a comentar esto de acá, acá y acá sería Collections con lechones.
Punto Empty.
Y acá tenemos el método Empty List de Vigen.
Entonces modificamos esa clasa y no la idea.
No sería la idea devolver o tener que estar modificando esto de acá para nuestra planetaria.
Adjetivo mal.
El cierre sería acá.
Perdón.
De esta forma lo van a probar.
Nos vamos a ir acá.
Revisamos qué pasa si devuelve una dicta ousía?
Obviamente no lo encuentra.
Por lo tanto va a devolver un null, entonces a ser no null.
Acá va a fallar porque en realidad va a ser null el examen.
Se fijan esperaba no nul, pero fue Nule.
No lo encuentra.
Obviamente he estado viendo una lista vacía y no encuentra matemática en esta lista.
Entonces, en cada escenario de prueba que queremos implementar acá, tendremos que modificar nuestro
repositorio y es ahí donde entra Mosquito.
Lo hace mucho más robusto, pero sube mucho más simple, fácil de probar.
Solamente escribimos un mock en el método Fain Holl con los datos que queremos devolver, es decir,
un contexto de prueba diferente sin tener que modificar ninguna implementación.
Y puede que ni siquiera tengamos la implementación de quizá la creamos después.
Por lo tanto, esto no es necesario.
Bien, voy a copiar esto.
Estos datos de prueba acá los voy a copiar.
Vamos a ir a la clase test por acá y vamos a pegar acá.
Tenemos nuestros datos de prueba la cacería raíz.
Importamos del tipo listo,
examen, datos.
Igual.
Esto importamos.
Listo.
De lo tenemos.
Bien, entonces ahora entramos con poquito, ahora que tenemos tus datos de ejemplo.
Podríamos incluso eliminar examen repositorio implemente esta acá.
Simplemente la vamos a quitar.
No la vamos a utilizar.
La eliminamos.
Esto acá también lo eliminamos.
De hecho, vamos a eliminar esto nomá he tenido y vamos a utilizar acá examen, repositorio, la interfaz,
el objeto igual y acá entre moquitos, entonces mock moquitos en realidad muñequito, punto Mok importamos
poquito y acá pasamos el nombre de la interfaz puese de la interfaz o de la clase que queremos simular,
por ejemplo en este caso examen, repositorio, examen, repositorio punto toclas entonces va a crear
una referencia, una instancia, una implementación al vuelo de examen repository pero simulada con
los métodos y le damos un comportamiento.
Entonces, por ejemplo, cuando se invoque el método find examen por nombre del service, le vamos a
indicar a moquitos que cuando se invoque el método del repository, el fin de buscar todos devuelva
esta lista.
Entonces todo esto lo cortamos.
Lo dejamos por acá.
Vamos a importar el poquito de forma automática.
Ya entonces te quitamos.
Dejamos solamente mock perfecto.
Vamos a subir acá.
Acá tenemos static o modificamos static punto asterisco.
Es decir, todos los métodos.
Y ahí tenemos Mok.
Bien, entonces por acá un poquito también.
Telémetro estático.
Juan 12 Cuando se invoque el método del repositorio, entonces repositorio punto final.
Y acá tenemos métodos.
Entonces ven devolver.
Acá tenemos el método Ratón.
Bueno, acá tenemos varios métodos.
Después vamos a ver si, por ejemplo, conocí un poco un método lanzar una excepción.
En fin, acá vamos a devolver una lista de datos y así le damos la implementación o el comportamiento.
Entonces, cuando se invoque, fenol va a devolver datos, pero ol del repository, que es una dependencia
del servis.
Entonces al final es acá.
Acá se está invocando Find ol va a ver esa lista que le indicamos y va a buscar.
Vamos a probar nuevamente en test y vamos a obtener el mismo resultado que tenemos ante la clase implementada.
Al final, lo que hace detener la invocación real del método Find All y la simula por este comportamiento
que le estamos dando acá.
Ejecutamos.
Y pasa la prueba.
Está bien, es decir, encuentra matemáticas, llega, nos damos cuenta de que la implementación concreta
del repository en realidad lo mismo.
Incluso solamente para que lo tengan en cuenta.
Voy a crear una nueva clase acá.
Repositorio.
Una clase que va a implementar esta interfaz, por ejemplo, examen repositorio.
Otro da lo mismo.
Quiero implementar implementa la interfaz examen repositorio.
Bien, implementamos el método.
Efecto, y acá vamos a tener, no sé, cualquier implementación, vamos a simular una pausa larga,
por ejemplo, como si estuviera realizando una consulta el repositorio en la base dato se fijan con
un tiempo con un delay unit punto no se que se demore en segundo, por ejemplo punto sleep 5 segundo
y sobre el error acá troika al enter zorrón, el catch anidar contra ricacho se fijan y devuélvelos.
Qué cosa podría devolver datos de ejemplo y devuelve cookie cosasy lo importante es simular alguna acción
que está haciendo el repositorio de alguna consulta pesada.
Trabajando se fija con un apagase o 5 segundos.
En fin, nos vamos a ir a la clase text y en vez de utilizar la interfaz vamos a utilizar esta implementación
examen repository.
Otro punto que las se fijan, solo estamos usando la clase repository y no la interfaz.
Estamos creando un mock, un simulacro de implementación concreta, pero si ejecuto esto al final nunca
se va a invocar el método Find All Real Real del objeto examen repositorio otro nunca se invocar este
método ya que lo estamos simulando acá en la clase test digan con el when repository font all que devuelve
esto.
Al final se está invocando esta simulación y no el método el objeto real.
De hecho, esto acá es un mock, ni siquiera el objeto la instancia real de examen repositorio otro.
Simplemente pasamos esto al servis y el servis va a detener, va a bloquear la llamada real del objeto.
Entonces veamos si me doy cuenta de que ni siquiera esto va a ser inmediato, ni siquiera esperar cinco
segundos, porque en realidad nos está llamando el método real.
Se fijan en automático, no pasa por acá.
Incluso podríamos acá imprimir con un shout.
Es todo acá.
Volvemos a levantar.
Tampoco se imprime consola.
Nunca se imprimió.
Esto de acá está mi repositorio, otro por qué nos está llamando.
Y eso es lo importante.
Se está simulando ese método.
Entonces por eso borré el otro repositorio que teníamos.
Porque al final da lo mismo.
Bien, ahora vamos a modificar un poco nuestro método.
Nos vamos a ir a examen Servis Simplement y también vamos a modificar esta implementación y nuestra
tarea.
Proyecté un poco mejor.
Entonces vamos a tomar esto.
El optional examen, lo seleccionamos, lo copiamos y lo pegamos acá.
Es decir, va a devolver un optional.
También vamos a ir a la interfaz.
Entonces por acá a la interfaz y en vez de devolver el examen, va a devolver un optional del examen.
No sé, esto en realidad da lo mismo, lo quitamos.
Queda mucho más fácil.
Y acá devolvemos examen opcional.
Visto tampoco, ni siquiera necesario hacer esto.
Simplemente esto se reemplaza por el ratón.
Esto lo quitamos.
Esto lo quitamos, lo quitamos y esto lo movemos acá.
Fija.
Proton Eso es un repository, fue Olt y hace la búsqueda y devuelve por cierto el optional.
El examen queda mejor.
Ahora nos vamos a ir a nuestra prueba unitaria acá.
Entonces devuelve un optional.
Optional lo importamos de lleba útil, perfecto y ni siquiera es necesario probar esto.
Not nul, esto incluso lo queremos quitar o de hecho lo podemos cambiar por true true.
Llega?
Preguntamos examen punto espresa.
Es decir, si está presente el examen.
Si se encontró y luego si se encontró.
Bueno, probamos la cacería, examen, punto or els fru o estar.
Pero el happy nos recomienda que sea con él el cero punto quieto.
Ahí obtenemos el objeto y lo comparamos con esto.
Y lo mismo acá.
Pero también podría ser Geet.
Recuerden al final get que obtiene el objeto y este método son exactamente lo mismo.
Hacen lo mismo solamente que el happy acá nos recomienda.
Se acuerdan que prefiramos usar el or el cetro llegue mucho mejor nuestro preguntaria incluso acá en
el mock examen repository otro estamos usando la implementación concreta la clase simplemente podrían
utilizar la interfaz de fican y no la clase queda mejor ahora.
Otro tema importante bueno, no se pueden hacer un mock de cualquier método, solamente los métodos
que son públicos o default de fold siempre cuando estemos dentro del mismo paquete, pero no de métodos
privados.
Es decir, no puedo realizar una simulación de un método privado ni tampoco de un método estático,
por ejemplo, en el repository en la interfaz.
Acá están.
Un repository no puede ser un método estático, tampoco un método privado, ni tampoco un método final
o final.
Solamente métodos pùblico.
Bien, y así como tenemos nuestro preguntaria que estamos probando, este contexto se fija en este de
acá.
También podrías probar otro contexto.
Qué pasa si en vez de que los datos que quiero que devuelva este método acá el centro botón sea esto
todo acá, devuelva otro conjunto, otro set de exámenes, por ejemplo?
Bueno, cualquiera o incluso una lista vacía.
De hecho, podría seleccionar todo esto.
Lo copiamos acá.
Cambiamos fin examen por nombre empty o lista vacía lista.
Y acá cambiamos en vez de esto.
Collection.
En The List.
Otro contexto.
Y no depende de una implementación, no depende de una clase.
Simplemente modificamos los datos.
Levantamos.
Y está perfecto.
Acá falla en el hacer Trum porque no está presente y expresan devolvió falso.
Y nosotros esperamos thru se fijan, entonces está perfecto.
Podemos implementar con moquitos varios contextos de prueba, es mucho más flexible, mucho más simple
utilizar sin tener que crean una clase de ejemplo compleja ni nada por el estilo.
Bien, lo dejamos así y continuamos en la siguiente clase.