Uno de los aspectos clave de las pruebas unitarias es el uso de mocks o simulaciones. Dentro de Jest, MockResults se convierte en una herramienta esencial para todo desarrollador.
MockResults en Jest nos permite emular comportamientos específicos de funciones en nuestras pruebas. Imagina que tienes una función que se conecta a un servicio meteorológico y devuelve la temperatura actual. Al ejecutar pruebas, no querrás hacer peticiones a dicho servicio constantemente. Aquí es donde entra en juego la magia de MockResults en Jest. Podrías mockear esa función para que devuelva un valor predefinido (por ejemplo, 25 grados) y, de este modo, cada vez que ejecutes tus pruebas tendrás resultados consistentes.
¿Qué son las mock functions?
Antes de nada, vamos a explicar qué son las mock functions. En el mundo de las pruebas, una mock function es una técnica utilizada para simular la funcionalidad de una verdadera función en el entorno de pruebas. Jest, como la poderosa biblioteca de pruebas que es, nos proporciona la herramienta de Jest Mock. Esta característica permite que la función en tu prueba devuelva valores específicos y te da la capacidad de espiar el comportamiento de la función. Así, puedes controlar cómo y cuándo reacciona una función a ciertos inputs.
Cuando pruebas un módulo de código, no quieres depender de la ejecución de otros módulos que pueda estar interactuando. Aquí es donde las mock functions entran en juego, ya que te permiten aislar el módulo que estás probando y asegurar que las interacciones con otras partes del código no afecten a tus pruebas.
Empezar con Jest Mock paso a paso
Crea una mock function
En Jest, puedes crear una mock function de la siguiente manera:
const mockFunction = jest.fn();
Este código crea una nueva mock function que puedes usar en tus pruebas. Esta función no tiene una implementación, por lo que no hará nada a menos que tú le digas qué hacer.
Especifica el comportamiento de la mock function
¿Qué pasa si quieres que tu mock function haga algo más específico? Jest te da la capacidad de especificar cómo se comportará la mock function.
jmockFunction.mockReturnValue("Hola mundo");
Con este código, cada vez que llames a mockFunction
, devolverá la cadena de texto «Hola mundo».
Analiza los MockResults en Jest
Ahora que sabes cómo crear una mock function y cómo especificar su comportamiento, necesitas entender cómo Jest registra los resultados de las mock functions. Esto es lo que la herramienta llama MockResults en Jest, objetos que Jest genera cada vez que una mock function se invoca. Contienen información acerca de cómo fue llamada la función, cuántas veces fue llamada y qué valores devolvió.
Además, MockResults en Jest proporciona información detallada sobre cómo se llamó a una función simulada durante la ejecución de las pruebas. ¿Fue llamada con los argumentos correctos? ¿Cuántas veces se llamó? ¿Qué devolvió cada vez? Estas son solo algunas de las preguntas que puedes responder con MockResults.
console.log(mockFunction.mock.results[0])
Este código imprimirá el MockResult del primer llamado a mockFunction
. Podrías ver un objeto similar a este: { type: 'return', value: 'Hola mundo' }
. Esto te indica que la mock function devolvió «Hola mundo».
Cuando usas la funcionalidad de Jest Mock, tienes el control total de la función y puedes analizar a fondo cómo interactúa con el resto de tu código.
Aprende mucho más con nosotros
Las mock functions en Jest son una herramienta poderosa que cualquier desarrollador debería dominar. Te permiten aislar tus módulos, controlar el comportamiento de las funciones y analizar a fondo las interacciones de tu código.
Ahora que has aprendido qué son los MockResults en Jest, estás listo para llevar tus pruebas al siguiente nivel. Si estás buscando una forma de cambiar tu vida gracias al desarrollo web, el Desarrollo Web Full Stack Bootcamp de KeepCoding es la opción perfecta para ti. Aprenderás mucho más sobre Jest y otras tecnologías esenciales en este mundo. Así, al finalizar la formación intensiva en pocos meses, estarás listo para abrirte paso en el sector tecnológico. ¡Anímate a impulsar tu futuro y únete ahora!