Test checkItem para clase carrito [Ejercicio práctico]

| Última modificación: 31 de julio de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

En este post vas a aprender en qué consiste el test checkItem para clase carrito con el método de SpyOn de Jest. Se trata de una de las muchas opciones que ofrece esta herramienta de comprobación para los test unitarios.

Test checkItem para clase carrito: SpyOn

El test checkItem para clase carrito es un ejercicio práctico que retomará el método spyOn de Jest para comprobar que se está llamando a la función correcta, que es la que necesitamos implementar y que utilizaremos en el programa de código. Podemos emplear el método de SpyOn para este fin, ya que se convierte en el espía de un objeto a partir de un método en específico y nos cuenta si está funcionando correctamente.

Así pues, escribimos la función con todas las características que necesita. Aquí vamos a capturar un error, donde comprobamos que no hay un objeto vacío, y después realizamos una comparación entre el precio y el nombre del ítem. El error se captura cuando no están estos elementos.

A continuación, puedes ver la representación, en forma de código, de lo que te acabamos de contar y de cómo resultaría la función:

checkItem (item) {
       if (tyoeof item === 'object' && Object.keys (item).length === 0) {
           throw new Error ("Item cannot be an empty object")
       } else if (typeof item !== 'object')
            throw new Error ('Must be an object')
       } 
       if (!item.price || !item.name) {
             throw new Error ('An item must have name and price')
      }

Hay que esperar a que el spyOn sea llamado al carrito, el cual va a dar observabilidad a lo que está sucediendo. El espía, en este caso checkItem, va a tener que espiar todo lo que se le pase a los métodos que propongamos, como puedes ver más adelante con addItem.

También es importante definir cuántas veces vamos a llamar el espía y cuál debe ser el input de nuestra función.

A continuación, verás en forma de código lo que acabamos de explicar. Esta representación está acompañada de pequeños comentarios que te dirán que está sucediendo en cada una de las líneas de código.

describe ('checkItem', () => {
       it ('Should check an item before adding', () => {
       //el espía da visibilidad a lo que pasa cuando se llama a una función que invoca a nuestra función espiada
      const spy = jest.spyOn (carrito, 'checkItem')
      // si llamamos a add item
      carrito.addItem (nigiriItem)
      // checkItem, nuestra función espiada, tiene que ser invocada
      expect (spy).toHaveBeenCalled()
      // el input tiene que ser el mismo que addItem
      expect (spy).toHaveBeenCalledWith (nigiriItem)
      //tiene que haberse llamado una única vez
      expect (spy).toHaveBeenCalledTimes (1)
  })
})

De esta manera, habrás aprendido a definir el checkItem para clase carrito con el método spyOn de Jest, una herramienta para test. Así, podrás reproducirlo en futuros proyectos. Además, puedes revisar la documentación oficial de Jest para aprender todo lo que puedes hacer con spyOn, así como otros métodos que pueden ayudarte a realizar futuras comprobaciones.

Si has llegado hasta este punto del artículo, habrás entendido cómo utilizar el método spyOn con este ejercicio práctico, en el que hemos aprendido a definir la función checkItem para clase carrito. ¡Utiliza este espía para otros métodos que necesites en tu camino en el mundo de la programación!

Si quieres seguir profundizando en este y otros temas, así como ampliar tus conocimientos, te invitamos a revisar el temario que ofrece nuestra formación intensiva en Desarrollo Web Full Stack Bootcamp. Todos los módulos teóricos y prácticos que presentamos te serán de gran ayuda para convertirte en un programador profesional en menos de un año. ¡Pide información ahora y cambia tu vida!

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