Si nous avons un fichier de test unitaire my-spec.js et fonctionnant avec mocha:
mocha my-spec.js
Le délai d'attente par défaut sera de 2000 ms. Il peut être remplacé pour un test partiel avec un paramètre de ligne de commande:
mocha my-spec.js --timeout 5000
Est-il possible de changer le délai d'expiration par défaut globalement pour tous les tests? c'est-à-dire que la valeur de délai d'attente par défaut sera différente de 2000 ms lorsque vous appelez:
mocha my-spec.js
Par défaut, Mocha lit un fichier nommé test/mocha.opts
pouvant contenir des arguments de ligne de commande. Donc, vous pouvez créer un tel fichier qui contient:
--timeout 5000
Chaque fois que vous exécutez Mocha sur la ligne de commande, il lira ce fichier et définira 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 consiste à le définir comme suit dans un appel de niveau supérieur describe
dans votre fichier de test:
describe("something", function () {
this.timeout(5000);
// tests...
});
Cela vous permettrait de définir un délai d'expiration uniquement pour chaque fichier.
Vous pouvez utiliser les deux méthodes si vous souhaitez une valeur globale par défaut de 5000 mais définissez une méthode différente pour certains fichiers.
Notez que vous ne pouvez généralement pas utiliser une fonction de flèche si vous appelez this.timeout
(ou accédez à tout autre membre de this
que Mocha définit pour vous). Par exemple, cela ne fonctionnera généralement pas :
describe("something", () => {
this.timeout(5000); //will not work
// tests...
});
En effet, une fonction de flèche prend this
de l'étendue dans laquelle la fonction apparaît. Mocha appellera la fonction avec une bonne valeur pour this
mais cette valeur n'est pas transmise à l'intérieur de la fonction de flèche. La documentation de Mocha dit sur ce sujet :
Il est déconseillé de passer des fonctions de flèche ("lambdas") à Mocha. En raison de la liaison lexicale qui en résulte, ces fonctions ne peuvent pas accéder au contexte Mocha.
En ajoutant simplement la réponse correcte, vous pouvez définir le délai d’expiration avec la fonction de flèche comme ceci:
it('Some test', () => {
}).timeout(5000)
Ajoutant ceci pour être complet. Si vous (comme moi) utilisez un script dans votre fichier package.json
, ajoutez simplement l'option --timeout
à mocha:
"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 à 10 000 millisecondes.
Dans les versions actuelles de Mocha, le délai d'attente peut être modifié globalement comme ceci:
mocha.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 séparé.
Dans les versions antérieures, et uniquement dans un navigateur, vous pouvez modifier la configuration globale à l'aide de mocha.setup
.
mocha.setup({ timeout: 5000 });
La documentation ne couvre pas le paramètre de délai global, mais offre quelques exemples sur la façon de modifier le délai dans d'autres scénarios courants.