Contenido del curso
Conociendo Cypress
Validando el contenido de la respuesta
Haciendo diferentes tipos de peticiones
Bases de Datos
Prueba en conjunto
Próximos pasos
Cómo probar MongoDB con Cypress
Resumen
Probar bases de datos NoSQL con Cypress requiere un enfoque distinto al de SQL, sobre todo cuando trabajas con MongoDB. Aquí aprenderás a configurar un plugin de conexión, listar documentos de una colección y validar resultados dentro de tus pruebas automatizadas, paso a paso y con ejemplos reales.
Los principios funcionan para cualquier motor NoSQL, así que si usas Firebase u otra opción, la lógica de conexión, consulta y cierre se mantiene casi idéntica.
¿Cómo se conecta Cypress a MongoDB desde un plugin?
La conexión empieza instalando la librería oficial de MongoDB en tu proyecto y creando una función asíncrona que devuelva la base de datos lista para consultarse [01:00].
Dentro del plugin defines una función connect que recibe un cliente, espera a que se establezca la conexión y retorna client.db apuntando a la colección que vas a usar. Para obtener las credenciales puedes apoyarte en Mongo Atlas, que entrega un servidor, un cluster y la dirección lista para pegar en tu configuración [01:30].
¿Qué es Mongo Atlas? Es el servicio en la nube de MongoDB que te permite crear bases de datos gratis dentro de ciertos límites. Te da el clúster, el servidor y la cadena de conexión que necesitas para configurar tu cliente.
Un detalle clave: el cliente se crea con new MongoClient y necesita la configuración que sacas de tus variables de entorno. Por eso, en tu archivo de configuración agregas una propiedad mongo con la cadena que te entregó Atlas [02:30].
¿Cómo listar documentos de una colección NoSQL?
Una vez que tu cliente conecta, creas una tarea asíncrona llamada getListing que se encarga de traer los datos. Toda la lógica vive dentro de un try catch porque trabajas con código asíncrono y conexiones que pueden fallar.
Dentro del try haces tres cosas concretas:
- Llamas a
await connect(client)para obtener la base de datos. - Seleccionas la colección con
db.collection('listingsAndReviews'). - Ejecutas
find().limit(50).toArray()para devolver máximo 50 documentos como arreglo [03:30].
El limit no es opcional. Sin él, una colección como listingsAndReviews (un dataset de ejemplo tipo Airbnb) puede regresar miles de registros y tardar demasiado. En el catch haces console.error del error, y en el finally ejecutas await client.close() para cerrar la conexión y no dejar procesos colgados [04:00].
¿Cómo validar los resultados en la prueba de Cypress?
Con el plugin listo, creas el archivo mongo.spec con un describe('Probando Mongo') y una prueba que llama a cy.task('getListing'). El resultado lo encadenas con .then(results => ...) para imprimirlo con cy.log y luego validar la longitud esperada [04:30].
La aserción se ve así: expect(results).to.have.length(50). Como en el plugin convertiste la respuesta a array, esta validación funciona directamente sobre la longitud del listado.
¿Por qué falla la conexión a MongoDB con timeout? Porque tu IP no está autorizada. En Mongo Atlas debes ir a Network Access y agregar tu dirección IP para que el cliente pueda conectarse por temas de seguridad.
Qué hacer cuando el array regresa vacío
Si tu prueba esperaba 50 elementos y obtuviste 0, lo más probable es que la colección esté vacía. En el ejemplo, la colección original se había borrado, así que la solución fue cambiar a otro dataset disponible: la base sample-guides con la colección planets [05:30].
Al correr de nuevo la prueba, el array devolvió 8 documentos, que era el total real de planetas en esa colección. Ajustando la aserción a to.have.length(8), la prueba pasa sin problema [06:00].
¿Por qué NoSQL se prueba distinto a SQL?
En bases relacionales pasas un query como cadena de texto y listo. En NoSQL trabajas con funciones encadenadas como find, limit o toArray, así que el plugin debe exponer métodos específicos para cada operación que quieras probar.
Por ahora solo estás listando información. Las operaciones de inserción, actualización y borrado en MongoDB requieren funciones distintas, y eso se cubre en la siguiente clase.
¿Ya intentaste conectar tu propia base en Mongo Atlas? Cuéntame en los comentarios qué dataset elegiste y si tuviste que ajustar tu Network Access para que funcionara.