Je soumets une demande de réseau dans un cas de test, mais cela prend parfois plus de 2 secondes (le délai par défaut).
Comment puis-je augmenter le délai d'expiration pour un seul cas de test?
C'est parti : http://mochajs.org/#test-level
it('accesses the network', function(done){
this.timeout(500);
[Put network code here, with done() in the callback]
})
Pour la fonction flèche, utilisez comme suit:
it('accesses the network', (done) => {
[Put network code here, with done() in the callback]
}).timeout(500);
before(function(done){this.timeout(5 * 1000);...});
.timeout(500)
à la fin deit(...).timeout(500)
Si vous souhaitez utiliser les fonctions fléchées es6, vous pouvez ajouter un
.timeout(ms)
à la fin de votreit
définition:Au moins, cela fonctionne dans Typescript.
la source
.timeout
n'est pas inclus dans les typages DefinitelyTyped pour mocha: i.imgur.com/jQbWCn1.png - L'utilisationthis.timeout(2000)
outhis.slow(500)
avec une ancienne fonction régulière fonctionne et se compile sans erreursit
, cela ne fonctionne pasdescribe
.describe()
oucontext()
?.timeout
est désormais inclus dans les typages de Mocha DefinitelyTyped à:Mocha.IRunnable
. Cependant, si vous utilisez l'IDE Webstorm pour exécuter ces tests, une note de prudence: pour une raison quelconque, le plug-in d'intégration Mocha de WebStorm ne reconnaît toujours pas les tests Mocha avec.timeout()
ajout (ce qui signifie qu'aucun bouton `` exécuter '' n'apparaît à côté d'eux), et donc je préconise d'éviter les fonctions fléchées pour permettre l'utilisation de à lathis.timeout()
place.(depuis que j'ai rencontré ça aujourd'hui)
Soyez prudent lorsque vous utilisez la syntaxe de la flèche de gras ES2015:
Cela échouera:
EDIT: Pourquoi cela échoue:
Comme @atoth le mentionne dans les commentaires, les fonctions des flèches grasses n'ont pas leur propre cette liaison. Par conséquent, il n'est pas possible pour la fonction it de se lier à cela du rappel et de fournir une fonction de délai d'expiration .
Conclusion : n'utilisez pas les fonctions fléchées pour les fonctions qui nécessitent un délai d'expiration plus long.
la source
this
liaison sur les fonctions fléchées - pas de la même manière ne suggérerait qu'elles ont une sorte de, juste différente. Ils n'ont que des portées lexicales. Vous ne pouvez pas lier cela non existant. C'est pourquoi.bind
,.call
etc. ne fonctionne pas avec.this
est.Si vous utilisez dans NodeJS, vous pouvez définir le délai d'expiration dans package.json
alors vous pouvez exécuter en utilisant npm comme:
la source
Depuis la ligne de commande:
la source
Vous pouvez également penser à adopter une approche différente et à remplacer l'appel à la ressource réseau par un objet stub ou mock. En utilisant Sinon , vous pouvez dissocier l'application du service réseau, en concentrant vos efforts de développement.
la source
Pour tester la non-négation sur
Express
:Dans l'exemple, le temps de test est de 4000 (4 s).
Remarque:
setTimeout(done, 3500)
est mineur pour ce quidone
est appelé dans le temps du test maisclearTimeout(timeOut)
il évite que utilisé tout ce temps.la source
Cela a fonctionné pour moi! Impossible de trouver quoi que ce soit pour le faire fonctionner avant ()
la source