Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

152
Vistas
Mocha + Chai + NodeJS nunca falla mientras debería

Hola, solo trato de hacer una prueba funcional con mocha + chai en nodeJS api y cada vez que intento algo, incluso si no es lo que esperaba de la prueba, la prueba parece pasar.

Aquí está mi código de prueba:

 const server = require("../server"); const chai = require("chai"); const chaiHttp = require("chai-http"); chai.use(chaiHttp); const expect = require("chai").expect; const requester = chai.request(server); describe("test user", function(){ describe("get all", function(){ it("should return all users and 400", function(){ requester.get("/api/users") .then(function(res){ console.log(res.status); expect(res).to.have.status(400); }) .catch(function(err){ throw(err); }) }) }) })

y esto es lo que obtengo:

 > backend@1.0.0 test > mocha "tests/users.test.js" App listening at http://:::4000 test user get all ✔ should return all users and 400 1 passing (13ms) Successfully connected to MongoDB. 200

como espero 400 y obtengo 200, debería fallar, pero no lo es.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

El problema es que está probando una promesa, por lo que su prueba finaliza antes de que se resuelva la promesa (con éxito o error). Para hacer que Mocha espere la promesa, puede hacer una de las siguientes cosas:

  1. Devolver la promesa del mocha it block
 describe("test user", function(){ describe("get all", function(){ it("should return all users and 400", function(){ return requester.get("/api/users") .catch(function(res){ expect(res).to.have.status(400); }) }) }) })
  1. use la función asíncrona y await la promesa, luego realice las expectativas:
 describe("test user", function(){ describe("get all", function(){ it("should return all users and 400", async function(){ const res = await requester.get("/api/users") expect(res).to.have.status(400); }) }) })

Aquí puede omitir la cláusula de catch ya que mocha lo resolverá.

Puede leer más sobre cómo probar cosas asincrónicas en los documentos oficiales de mocha .

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda