Anderson David Chicaiza Tenesaca
Mauricio Gonzalo Aliendre Pérez
Emmanuel Rodríguez
Oscar Monsalve
Mario Alexander Vargas Celis
Eduardo Huanca
luego de este curso hare uno de DB, me perdi un poco 😢
Para Cypress 12 lo que hcie en mi caso fue lo siguiente:
Por defecto utilice la conexion que te da Mongo al momento de instalarlo y el URI en el archivo cypress.env.json lo puse asi:
"mongo": "mongodb://127.0.0.1:27017/"
| Este lo pueden sacar desde la opción Copy connection string en MongoDB Compass | NOTA: Esta con 127.0.0.1 debido a que con localhost falla y según leí es debido a que con localhost Mongo utiliza una dirección IPv6 y al darle el valor de 127.0.0.1 utiliza la dirección de localhost pero de IPv4 | La conexion la configure asi en el archivo cypress.config.js
const { defineConfig } = require("cypress"); const { MongoClient } = require("mongodb"); const mysql = require('mysql') module.exports = defineConfig({ e2e: { baseUrl: "https://localhost:3000/", setupNodeEvents(on, config) { // implement node event listeners here on('task',{ queryTestDb:function(query) { const connection = mysql.createConnection(config.env.db) connection.connect() return new Promise((resolve, reject) => { connection.query(query,(err,results)=>{ if(err){ reject(err) } else { connection.end() return resolve(results) } }) }) }, queryMongo: async function(object) { let client; try { client = new MongoClient(config.env.mongo); await client.connect(); console.log("Connected to MongoDB"); const db = client.db('cypress'); const collection = db.collection("tests"); const results = await collection.find(object).toArray(); return results; } catch (e) { console.error("Error connecting to MongoDB", e); throw e; } finally { if (client) { await client.close(); console.log("Disconnected from MongoDB"); } } } }) }, excludeSpecPattern:[ "**/1-getting-started/*.js", "**/2-advanced-examples/*.js" ] } });
En mi caso me cree una base de datos llamada cypress y dentro una coleccion llamada tests, el objeto que cree solo para tener informacion que recuperar de dicha coleccion es {Name: 'Mauricio'} | Y finalmente para el test puse lo siguiente:
describe("Testing mongo", function() { it('Listing mongo', function () { let object = { Name: "Mauricio" }; cy.task("queryMongo", object).then((results) => { cy.log(results); expect(results).to.have.length(1); expect(results[0].Name).to.be.eq("Mauricio") }); }); });
¡Rock n' Roll! 🤟
Estoy usando docker y Mongo Compass. Y tuve un error que solucioné:
cy.task('queryMongo') failed with the following error:
> connectionString.startsWith is not a function
``
Tenía la conexión a mongo en el código de esta manera:
const client = new MongoClient({
mongo: 'mongodb://127.0.0.1:27017/'
});
Hay que cambiarlo por esta:
const client = new MongoClient('mongodb://127.0.0.1:27017/');
Al momento de poner la url para crear la conexión, mongo espera solo un string con la url, no un objeto que contiene mongo: 'url'
En este link escuentran mi solucion:
Qué complicado...