Test de clase users.controllers.js [Ejercicio práctico]

Autor: | Última modificación: 8 de abril de 2024 | Tiempo de Lectura: 2 minutos
Temas en este post:

Algunos de nuestros reconocimientos:

Premios KeepCoding

Si quieres aprender sobre test y aprender a realizar el test de clase users.controllers.js, estás en el lugar correcto. A lo largo de este artículo, encontrarás todas las herramientas, como spyOn de Jest, y funciones que puedes realizar para comprobar que lo que has programado está perfecto.

Test de clase users.controllers.js

Vamos a exportar la función para obtener todos los usuarios, que formarán parte de los controllers del programa de código. Esta función, en términos generales, está intentando obtener todos los usuarios a partir de una petición con una función de req, res, next.

const userModel = require ('.../models/users');

module.exports = {
         getAllUsers: async function (req, res, next) {
               try {
                     let users = await userModel.find ();
                     res.json ({users});
                    } catch (e) {
                          next (e.message);
                    }
       }
}

Ahora que ya tenemos la función del controlador, debemos aseguraros de que llamamos al método userModel.find y de que vamos a obtener las respuestas correctas. Para este fin, podemos emplear el método spyOn, que es una de las herramientas que ofrece Jest para realizar las comprobaciones.

Por lo tanto, primero vamos a importar la petición para obtener los controladores y la clase de users.controllers, así como el módulo donde encontramos la clase sin controladores. Después, podemos empezar a describir el test de los controladores de los usuarios y de la función GetAllUsers. Entonces, comprobaremos que se hace la llamada a users.find. Luego, pediremos la observabilidad del find con spy.

De esta manera, esperaremos dos aserciones. A su vez, tenemos que pasarle elementos a getAllUsers, por lo que le pasaremos un objeto vacío a req, mientras que a res le pasaremos el método para mostrar la respuesta con JSON. Además, a next le pasaremos una función de Jest que crea un objeto vacío.

De la respuesta que se obtiene para el controlador, donde pasamos el método getAllUsers con los tres objetos, esperamos que sea llamado al menos una vez y, al mismo tiempo, que con next no sea llamado en ninguna ocasión.

A continuación, verás la reproducción en forma de código de todo lo que te hemos comentado:

const usersController = require ("../../controllers/users.controllers.js")
const usersModel = require ('..(../models/users.js')

describe (´Testing users controllers', () => {
      describe ('getAllUsers, () =>  {
              it ('Should call /models/users.find()', async () => {
                   const spy = jest.spyOn (usersModel, 'find')

                   expecto.assertions (2)

                   const req = {}
                   const res = {json: jest.fn()}
                   const next = jest.fn()
                   try {
                       const response = await userController.getAllUsers (req, res, net)
                       expect (spy).toHaveBeenCalledOnce()
                       expect (next).toHavebeenCalledTimes (0)
                     } catch (e) 
             }
     })

¿Qué sigue ahora?

Ya has entendido cómo realizar el test de clase users.controllers.js y cómo emplear la observabilidad con la herramienta spy de Jest. Ya solo queda que sigas practicando, para seguir asentando tus conocimientos en la materia y convertirte en un desarrollador web profesional.

Si estás buscando un lugar para lograr el sueño de acceder y crecer en el sector IT, te recomendamos nuestro Desarrollo Web Full Stack Bootcamp, la formación de alta intensidad que contiene un programa lleno de módulos que cambiarán tu vida y fortalecerán tu futuro laboral. ¡Solicita información ahora e impulsa tu carrera!

¡CONVOCATORIA ABIERTA!

Desarrollo Web

Full Stack Bootcamp

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