Cómo utilizar la función spyOn en Jest

| Última modificación: 18 de marzo de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

¿Quieres sacarle el máximo provecho a las pruebas unitarias en desarrollo web? Aprender cómo y cuándo utilizar la función spyOn en Jest te ayudará a lograrlo, ya que esta técnica de pruebas es una potente herramienta que nos permite obtener métricas y observaciones sobre una función específica.

¿Qué es Jest y por qué es relevante la función spyOn?

Jest es una biblioteca de JavaScript creada por Facebook que se usa mucho para hacer pruebas unitarias. Es una de las preferidas de la comunidad de desarrollo gracias a su simplicidad y potencia.

La función spyOn en Jest nos proporciona para poder espiar cómo se comportan nuestras funciones. Es como un detective privado para nuestro código, que nos da detalles sobre cómo se está ejecutando una función.

¿Cómo funciona spyOn?

El espía no solo permite la ejecución de la función que estamos probando, sino que también recoge métricas que luego podemos analizar.

Vamos a verlo con un ejemplo para entender mejor cómo manejar la función spyOn en Jest:

it('debería verificar cuántas veces se hace play en un vídeo', () => {
  const video = {
    play: () => {}
  };

  const spy = jest.spyOn(video, 'play');

  video.play();
  
  expect(spy).toHaveBeenCalled();
});

En este pedazo de código, creamos un objeto video con una función play. Luego, utilizamos la función spyOn en Jest para espiar cuándo se llama a esta función. Finalmente, ejecutamos video.play() y utilizamos la función toHaveBeenCalled de Jest para verificar si la función play ha sido llamada.

Esos son los básicos, pero la función spyOn puede hacer mucho más. Por ejemplo, también podemos comprobar con qué parámetros se llama a una función y qué valores devuelve.

Un paso más allá con la función spyOn en Jest

Digamos que queremos comprobar cuántas veces se llama a una función o con qué parámetros se ha llamado. Aquí es donde entra en juego la verdadera magia de la función spyOn en Jest. Veamos otro ejemplo:

it('debería verificar cuántas veces se añade un artículo al carrito', () => {
  const carrito = {
    addItem: (item) => {}
  };

  const spy = jest.spyOn(carrito, 'addItem');

  carrito.addItem('botella');
  carrito.addItem('botella');

  expect(spy).toHaveBeenCalledTimes(2);
  expect(spy).toHaveBeenCalledWith('botella');
});

En este ejemplo, estamos comprobando cuántas veces se llama a la función addItem y con qué parámetros se llama. Usamos toHaveBeenCalledTimes para verificar cuántas veces se ha llamado a la función y toHaveBeenCalledWith para verificar con qué parámetros se ha llamado.

Como puedes ver, la función spyOn en Jest es una herramienta potentísima para mejorar la calidad de nuestras pruebas unitarias. Al dominar su uso, podrás escribir test mucho más completos y confiables.

¿Por qué deberías aprender a usar la función spyOn en Jest?

El desarrollo de software no consiste solo en escribir código, sino en escribir código que funcione y que podamos mantener y evolucionar con facilidad. Es por ello que las pruebas unitarias, y en particular herramientas como Jest y funciones como spyOn, son tan críticas.

Las pruebas unitarias nos permiten comprobar que nuestro código funciona como esperamos. Nos dan la confianza para hacer cambios y mejoras sin temor a romper algo. Y, aún mejor, nos ayudan a diseñar mejor nuestro código.

Al final del día, aprender a usar Jest y spyOn no solo te hará un mejor desarrollador, sino que también te dará una ventaja competitiva en el mundo laboral. Es una habilidad muy buscada, y por buenas razones. Por eso, si quieres seguir aprendiendo, no puedes perderte el Desarrollo Web Full Stack Bootcamp en KeepCoding. En esta formación intensiva, aprenderás a utilizar Jest y spyOn, junto con muchas otras técnicas y herramientas esenciales para el desarrollo web moderno.

Al finalizar el bootcamp, tendrás la habilidad y la confianza necesarias para construir aplicaciones web robustas, eficientes y escalables. ¿Estas listo para transformar tu vida y entrar en un sector con una alta demanda de profesionales? ¡No esperes más! Pide información ya mismo y conviértete en el desarrollador web que siempre has querido ser.

Alberto Casero

Alberto Casero es CTO en Watium, Fundador de Kas Factory & Coordinador del Bootcamp en Desarrollo Web.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Desarrollo Web

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado