Edge testing para clase carrito [Ejercicio práctico]

| Última modificación: 23 de mayo de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

En este artículo verás un ejercicio práctico con el edge testing para clase carrito, lo que te resultará muy útil si quieres seguir aprendiendo acerca de los testings para los extractos de código que desarrolles. Al realizar edge testings sobre las funciones y clases de tu programa, tu programa de código estará más que comprobado y listo para ser ejecutado. Por lo tanto, sigue leyendo y no te pierdas este post sobre cómo realizar el edge testing para clase carrito.

¿Qué es el edge testing?

En programación, es necesario anteponernos a lo que pueda pasar e imaginar todos los problemas o errores que puedan surgir con nuestro código. Esto te permitirá evitar dichos fallos y, de este modo, obtendrás un código mucho más efectivo desde el primer momento.

Para lograrlo, es imprescindible llevar a cabo labores de testing y uno de estos métodos es el de edge testing, donde pasamos nuestro código por diferentes procesos y experimentos para ver si pueden superarlos. De este modo, disminuiremos la posibilidad de que surjan errores o problemas en el futuro. Ahora, es el momento de hablar del ejercicio práctico que nos atañe: edge testing para clase carrito.

Edge testing para clase carrito

La clase carrito es un elemento con el que ya hemos trabajado en artículos anteriores y que hemos pasado por varios test. Ahora, con el edge testing, vamos a realizar cualquier comprobación que nos imaginemos y que necesitemos para definir cuáles son las características y funcionalidades que queremos testar dentro de nuestra clase carrito para la conformación de un marketplace.

Así pues, a continuación verás cómo definir la función que contendrá el error. En primer lugar, para hacerlo mucho más funcional, vamos a definir un control de errores. Después, podremos definir nuestro edge testing.

Para ello, también utilizaremos el método de typeOf, donde el ítem será diferente al objeto que se le pase. Esta situación va a lanzar un nuevo error con la etiqueta de “Must be an object”.

addItem (item) {
       if (typeof 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')
            }

         this.items.push (item);
   }

Ahora es el momento de definir el test que comprobará si el objeto que se le pase como parámetro a la anterior función es realmente un objeto o no. Entonces, definiremos específicamente que nuestro test va a lanzar un error con la etiqueta “Must be an object” cuando se pase un elemento que no es un objeto.

Siguiendo la estructura del test, tendremos que definir lo que esperamos con el método expect. Cuando se pase el ítem Hello, que es un string y no un objeto, lanzará el error y la etiqueta pedirá un objeto con “Must be an object“.

Por otro lado, también podríamos esperar que, cuando se pasen elementos como funciones o promesas, el test también lance un error que pida que se pase un objeto como parámetro dentro de la función.

  it ('Should throw an error saying "Must be an object" when trying to add a non object', () => {
      expect (() => carrito.addItem ('Hello')).toThrow (/must be an object/i)
      expect (() => carrito.addItem ('function(){}')).toThrow (/must be an object/i)
})
  it.todo ('Should throw an error when trying to add an item without name or price')  

En este caso, también pasamos otro test para hacerlo después. Para ello, usamos el modificador todo para establecer que necesitamos hacerlo en algún momento. Este será un test que lanzará un error cuando se pase un objeto que no tenga nombre ni precio al carrito de compra del marketplace.

Ya que has terminado este post y has aprendido cómo llevar a cabo el
edge testing para clase carrito, es el momento de reproducir el proceso en otros proyectos y afianzar los conocimientos adquiridos.

Si quieres seguir aprendiendo con nosotros y convertirte en todo un desarrollador profesional, puedes dar un paso más al apuntarte en nuestra formación intensiva de Desarrollo Web Full Stack Bootcamp. Aprenderás la teoría y la práctica necesarias para destacar en el mercado laboral IT en cuestión de meses. ¡Solicita información 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