Si nous avons un fichier de test unitaire my-spec.js et fonctionnant avec mocha:
mocha my-spec.js
Le délai d'expiration par défaut sera de 2000 ms. Il peut être écrasé pour un test partiel avec un paramètre de ligne de commande:
mocha my-spec.js --timeout 5000
Est-il possible de modifier globalement le délai d'expiration par défaut pour tous les tests? c'est-à-dire que la valeur de timeout par défaut sera différente de 2000 ms lorsque vous appelez:
mocha my-spec.js
Réponses:
Par défaut, Mocha lit un fichier nommé
test/mocha.opts
qui peut contenir des arguments de ligne de commande. Vous pouvez donc créer un tel fichier contenant:Chaque fois que vous exécutez Mocha sur la ligne de commande, il lira ce fichier et définira un délai d'expiration de 5 secondes par défaut.
Une autre façon qui peut être meilleure en fonction de votre situation est de le définir comme ceci dans un
describe
appel de niveau supérieur dans votre fichier de test:Cela vous permettrait de définir un délai d'expiration uniquement sur une base par fichier.
Vous pouvez utiliser les deux méthodes si vous voulez une valeur par défaut globale de 5000 mais définir quelque chose de différent pour certains fichiers.
Notez que vous ne pouvez généralement pas utiliser une fonction de flèche si vous allez appeler
this.timeout
(ou accéder à tout autre membre dethis
cet ensemble Mocha pour vous). Par exemple, cela ne fonctionnera généralement pas :C'est parce qu'une fonction de flèche prend
this
de la portée dans laquelle la fonction apparaît. Mocha appellera la fonction avec une bonne valeur pourthis
mais cette valeur n'est pas passée à l'intérieur de la fonction de flèche. La documentation de Mocha dit à ce sujet :la source
/home/me/src/proj/
Mocha va rechercher ce fichier:/home/me/src/proj/test/mocha.opts
this
, ce qui entraîne généralement unthis.timeout
échec comme vous le montrez dans votre commentaire.En ajoutant simplement à la bonne réponse, vous pouvez définir le délai d'expiration avec la fonction de flèche comme ceci:
la source
describe('suite', () => {...}).timeout(5000)
ne fonctionne pas.setTimeout
instructions explicites à l'intérieur des tests.L'ajout de ceci pour l'exhaustivité. Si vous (comme moi) utilisez un script dans votre
package.json
fichier, ajoutez simplement l'--timeout
option à mocha:Ensuite, vous pouvez exécuter
npm run test
votre suite de tests avec le délai d'expiration défini sur 10 000 millisecondes.la source
Dans les versions actuelles de Mocha, le délai d'expiration peut être modifié globalement comme ceci:
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 séparé.
Dans les anciennes versions, et uniquement dans un navigateur, vous pouviez modifier la configuration globale à l'aide de
mocha.setup
.La documentation ne couvre pas le paramètre de délai d'expiration global, mais offre quelques exemples sur la façon de modifier le délai d'expiration dans d'autres scénarios courants.
la source
timeout
paramètre. Au contraire, mochajs.org/#timeouts dit d'insérer dessetTimeout
instructions explicites à l'intérieur des tests.