Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

151
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!