¿Cómo hacer unit testing con Chai Json Pattern?

Orlando Jimenez

mar. 7º 2022

Descubre cómo implementar la librería Chai en tus tareas de unit testing.

Hacer unit testing con chai json pattern

Hacer unit testing significa asegurar el buen funcionamiento de tu proyecto, ya que sirve como una capa extra de protección que evita posibles bugs. Y para que aproveches mejor esta práctica, hoy te explico la relación que tiene con Chai Json Pattern.

Antes que todo… ¿Cuál es la importancia de unit testing?

No existe una regla que indique que siempre deba realizarse, sin embargo, hay evidencia de que detecta el 75% de todos los errores antes de que lleguen a cualquier equipo de control de calidad. Por eso se recomienda implementarlo.

Los tests no deben validar unidades de código, sino unidades de comportamiento.

Ahora sí… ¿Qué es Chai Json Pattern?

Chai es una librería para Node y el navegador que se puede combinar con cualquier framework de testing de Javascript. Lo que permite que las pruebas unitarias resulten más legibles al momento de implementarlas.

Chai
Photo by René Porter on Unsplash

Una de las extensiones de Chai es Chai Json Pattern, que permite utilizar la sintaxis de JSON con validadores fáciles de usar, y que además, puede ampliar la funcionalidad básica con validadores personalizados.

Para que lo comprendas mejor, te dejo un ejemplo de su implementación:

https://medium.com/media/416cdaa2bd6c6fff92d1389d3879c917/href

user

Debe ser un objeto con las keys que cumplan estas condiciones:

username

  • String requerido.
  • Contener solo caracteres alfanuméricos.
  • Tener al menos 3 caracteres y máximo 30.

password

  • String requerido.
  • Cumplir con la expresión regular.

access_token

  • String o número opcional.

birthyear

  • Entero entre 1900 y 2017.

email

  • String requerido.

. . .

  • Permitir otras keys (ejemplo: createdAt, updatedAt, etc.)

Si user no cumple con pattern, el test no pasa y surge un error tras la diferencia entre user y pattern.

¿Cómo instalar Chai?

Es necesario seguir un proceso de 2 pasos:

  1. Instalar el paquete: npm run --save-dev chai-json-pattern

2. Importar:chaiJsonPattern y usar matchPattern :

https://medium.com/media/d6d274957b9f5a019fdd891517d0b5ac/href

¿Para qué sirve Chai matchPattern?

La función matchPattern() contiene diferentes validadores dependiendo del tipo de dato que se requiere validar. Veamos algunos:

Objects validation
Determina si el valor es tipo objeto (arrays, objects, new number(0), …)

https://medium.com/media/99ca6fa470bc9aa84b9a2e71530f67ac/href

Arrays validation
Especifica si el valor es clasificado como un arreglo. Adicional a eso, es posible extender las validaciones usando algunos métodos como minLength(limit) , maxLength(limit) , length(limit) , etc.

https://medium.com/media/808597fe20b413399dac5e6f8ea22182/href

Strings validation
Establece si el valor es clasificado como un objeto String primitivo. Adicional a eso se pueden extender las validaciones usando algunos de estos métodos: minLength(limit) , maxLength(limit) , length(limit) , regex(pattern) , alphanum , lowercase , uppercase , startsWith(target) , endsWith(target) , entre otros.

https://medium.com/media/bf123ea8131660e315fbe5e67e97a117/href

Numbers validation
Determina si el valor es clasificado como un objeto Number primitivo. Además, permite extender las validaciones usando algunos de los siguientes métodos: integer , positive , negative , min(limit) , max(limit) , greater(limit) , less(limit) , range(start, end) , etc.

https://medium.com/media/718e2f7d0b811e00b5c29006d8ce9197/href

Booleans validation
Precisa si el valor es clasificado como un objeto boolean primitivo. Además facilita extender las validaciones usando algunos métodos como: truthy o falsy .

https://medium.com/media/a3aad45a280b7213660a9a243b446af0/href

Dates validation
Determina si el valor es clasificado como un objeto Date. Adicional a eso, es posible utilizar la validacióndateString para saber si el valor puede convertirse a una fecha válida.

https://medium.com/media/b27b5eee7c6112ecf3191bdb9b53d670/href

➡️Revisa aquí la documentación completa.

¡Chai agiliza el testing!

Sin duda, Chai es una librería que permite hacer más legible nuestro código al momento de realizar unit testing, en lugar de tener múltiples expects validando cada una de las keys que se necesitan retornar en un objeto, hacer un pattern con la estructura completa del JSON y de solo pasarlo como parámetro al método matchPattern().

No olvides que además del correcto funcionamiento de tu código, es muy importante que cuides la calidad del mismo, y más cuando trabajas dentro de un equipo de desarrollo. Así cualquiera podrá entenderlo fácilmente.

¿Quieres aprender más sobre temas relacionados? 👉Visita el blog de Nowports Tech👈


¿Cómo hacer unit testing con Chai Json Pattern? was originally published in Nowports Tech on Medium, where people are continuing the conversation by highlighting and responding to this story.