es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo importar la aplicación del servidor para chai request()?

Quiero ejecutar pruebas en mi servidor Node Express, sin embargo, esta aplicación está iniciando el servidor de esta manera:

createServer()
.then(server => {
    server.listen(PORT);
    Log.info(`Servidor iniciado en http://localhost:${PORT}`);
})
.catch(err => {
    Log.error("Fallo al iniciar.", { error: err });
    process.exit(1);
});

Y sé que chai.request() necesita tener un parámetro que apunte hacia la aplicación del servidor, ¿cómo puedo exportar/importar esta función createServer() y pasarla en el método request del objeto chai?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para exportar la función createServer() y pasarla en el método chai.request() del objeto chai, puede modificar el código de la siguiente manera:

    1. Exportar la función createServer():
    // app.js
    const express = require('express');
    
    // Define su aplicación y rutas
    const app = express();
    // ...
    
    // Función para crear el servidor
    function createServer() {
      return new Promise((resolve, reject) => {
        // Iniciar el servidor
        const server = app.listen(PORT, (err) => {
          if (err) {
            reject(err);
          } else {
            resolve(server);
            console.log(`Servidor iniciado en http://localhost:${PORT}`);
          }
        });
      });
    }
    
    module.exports = createServer;
    
    1. Importar la función createServer() en su archivo de prueba:
    // test.js
    const chai = require('chai');
    const chaiHttp = require('chai-http');
    const createServer = require('./app');
    
    chai.use(chaiHttp);
    
    describe('Servidor', () => {
      let server;
    
      // Antes de cada prueba, iniciar el servidor
      beforeEach(async () => {
        server = await createServer();
      });
    
      // Después de cada prueba, detener el servidor
      afterEach(() => {
        server.close();
      });
    
      it('debería devolver 200', async () => {
        const res = await chai.request(server).get('/');
        chai.expect(res).to.have.status(200);
      });
    });
    

    En el gancho beforeEach(), se llama a la función createServer() y se guarda el objeto de servidor devuelto en una variable server.

    Luego, en el caso de prueba, se utiliza el método chai.request() con la variable server como parámetro para enviar una solicitud GET a la ruta '/' y se espera que el estado de respuesta sea 200.

    Nota: El código asume que la constante PORT está definida y que Log es una utilidad de registro, que no está definida en el fragmento de código dado.

Comments are closed.