web-dev-qa-db-fra.com

Mocha: dépassement du délai d'erreur de 2000 ms

J'essaie de semer la base de données pour le test unitaire.

Voici le fichier seed.js:

.......
const app = require('./app')
const db = app.get('db')

const saveUsersToDB = (done) => {
    db.User.bulkCreate(users)
         .then(() => (done))
}

module.exports = {saveUsersToDB};

Mon fichier app.test.js:

.......
const expect = require('expect')
const request = require('supertest')
const {saveUsersToDB} = require('./seed/seed');

before(saveUsersToDB)

Lorsque j'exécute le test ci-dessous, l'erreur que j'obtiens:

Express listening on port 3000!
  1) "before all" hook: saveUsersToDB

  0 passing (2s)
  1 failing

  1)  "before all" hook: saveUsersToDB:
     Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves.

npm ERR! Test failed.  See above for more details.

Je pensais que retourner .then(() => (done)) était suffisant? Qu'est-ce que je fais mal?

10
user1107173

Car (done) retournera en fait la fonction au lieu de l'invoquer. Pour appeler done, vous devez l'écrire de cette façon.

.then(() => done())

Cependant, je ne recommande pas d'utiliser done avec des promesses. Il vous suffit de renvoyer la promesse, puis mocha la traitera automatiquement.

const saveUsersToDB = () => db.User.bulkCreate(users)
12
Lewis

Par défaut, les tests mocha ont un délai d'attente de 2 secondes (ce qui signifie que le test doit être terminé en 2 secondes).

Vous pouvez augmenter (en millisecondes) comme suit:

this.timeout(5000); // this test can take up to 5 seconds

https://mochajs.org/#timeouts

17
Kalman

J'ai eu la même chose. Cette erreur se produit car le délai d'attente de 2 secondes, donc si votre test doit se connecter à ddbb, il le dépassera sans aucun doute.

Ce que j'ai fait, c'est de séparer tous mes tests qui nécessitaient une sorte de connexion à des ressources externes dans mon dossier de tests d'intégration, puis j'ai ajouté l'indicateur suivant dans mon package.json script de test:

"int-test": "mocha --timeout 15000 tests/integration/**/*.test.js --compilers js:babel-register "

Suivez ce lien pour d'autres façons d'augmenter le délai: délai mocha

5
sendra