Modifier le délai d’attente par défaut pour mocha

J’ai la question suivante si nous avons le fichier de test unitaire my-spec.js et en cours d’exécution avec mocha:

mocha my-spec.js 

le délai d’expiration par défaut sera 2000 ms.Il peut remplacer pour un test partiel avec le paramètre de ligne de commande:

 mocha my-spec.js --timeout 5000 

La question est: est-il possible de modifier le délai d’expiration par défaut globalement pour tous les tests? Ie quand vous appelez

 mocha my-spec.js 

la valeur du délai d’expiration par défaut étant différente de 2000 ms Merci d’avance

Par défaut, Mocha lit un fichier nommé test/mocha.opts pouvant contenir des arguments de ligne de commande. Vous pouvez donc créer un tel fichier qui contient:

 --timeout 5000 

Chaque fois que vous exécutez Mocha sur la ligne de commande, il lit ce fichier et définit un délai d’attente de 5 secondes par défaut.

Une autre méthode qui peut être préférable en fonction de votre situation est de la définir comme ceci dans un appel de describe haut niveau dans votre fichier de test:

 describe("something", function () { this.timeout(5000); // tests... }); 

Cela vous permettrait de définir un délai uniquement par fichier.

Vous pouvez utiliser les deux méthodes si vous voulez une valeur par défaut globale de 5000, mais définissez quelque chose de différent pour certains fichiers.


Notez que vous ne pouvez généralement pas utiliser une fonction flèche si vous this.timeout appeler this.timeout (ou d’accéder à tout autre membre que Mocha définit pour vous). Par exemple, cela ne fonctionnera généralement pas :

 describe("something", () => { this.timeout(5000); // tests... }); 

C’est parce qu’une fonction de flèche prend this dans la scope dans laquelle la fonction apparaît. Mocha appelle la fonction avec une bonne valeur pour this mais cette valeur n’est pas passée à l’intérieur de la fonction de flèche. La documentation de Mocha dit à ce sujet :

Il est déconseillé de transmettre des fonctions de flèche («lambdas») à Mocha. En raison de la liaison lexicale, ces fonctions ne peuvent pas accéder au contexte Mocha.

Si vous exécutez (comme moi) Mocha dans un navigateur plutôt que sur le serveur, vous pouvez toujours changer la configuration globale en utilisant mocha.setup .

 mocha.setup({ timeout: 5000 }); 

Ajoutez simplement la ligne ci-dessus n’importe où dans votre suite de tests, de préférence en haut de vos spécifications ou dans un assistant de test distinct.

Voici le lien vers la documentation avec quelques exemples montrant comment configurer Mocha dans le navigateur.

Ajout de ceci pour la complétude. Si vous (comme moi) utilisez un script dans votre fichier package.json , ajoutez simplement l’option --timeout à --timeout :

 "scripts": { "test": "mocha 'test/**/*.js' --timeout 10000", "test-debug": "mocha --debug 'test/**/*.js' --timeout 10000" }, 

Ensuite, vous pouvez exécuter npm run test pour exécuter votre suite de tests avec le délai d’attente défini sur 10 000 millisecondes.

En ajoutant simplement à la bonne réponse, vous pouvez définir le délai avec la fonction flèche comme ceci:

 it('Some test', () => { }).timeout(5000)