461 Stimmen

Wie kann ich das Timeout für ein einzelnes Testfall in Mocha erhöhen?

Ich sende eine Netzwerkanfrage in einem Testfall ab, aber manchmal dauert es länger als 2 Sekunden (das Standard-Zeitlimit).

Wie kann ich das Zeitlimit für einen einzelnen Testfall erhöhen?

735voto

Dan Kohn Punkte 32574

Hier ist es: http://mochajs.org/#test-level

it('zugreift das Netzwerk', function(done){
  this.timeout(500);
  [Fügen Sie hier den Netzwerkcode ein, mit done() im Rückruf]
})

Für Pfeilfunktion verwenden Sie wie folgt:

it('zugreift das Netzwerk', (done) => {
  [Fügen Sie hier den Netzwerkcode ein, mit done() im Rückruf]
}).timeout(500);

158voto

Chris Sparrow Punkte 1589

Wenn Sie ES6-Pfeilfunktionen verwenden möchten, können Sie Ihrem it-Definitionsende ein .timeout(ms) hinzufügen:

it('sollte nicht ablaufen', (done) => {
    doLongThing().then(() => {
        done();
    });
}).timeout(5000);

Zumindest funktioniert dies in TypeScript.

77voto

chriskelly Punkte 6944

(da ich heute darüber gestolpert bin)

Vorsicht beim Verwenden der ES2015 Pfeilfunktion:

Dies wird fehlschlagen :

it('greift auf das Netzwerk zu', done => {

  this.timeout(500); // funktioniert nicht

  // Die *this* Bindung bezieht sich in Pfeilfunktionen auf den Elternfunktionsumfang!
  // d.h. das *this* Objekt der describe Funktion

  done();
});

EDIT: Warum es fehlschlägt:

Wie @atoth in den Kommentaren erwähnt, haben Pfeil-Funktionen keine eigene this Bindung. Daher ist es nicht möglich für die it Funktion, sich an das this des Rückrufs zu binden und eine timeout Funktion bereitzustellen.

Fazit: Verwenden Sie keine Pfeilfunktionen für Funktionen, die eine erhöhte Timeout benötigen.

58voto

Wenn Sie NodeJS verwenden, können Sie das Timeout in der package.json festlegen

"test": "mocha --timeout 10000"

dann können Sie es mit npm ausführen:

npm test

25voto

andrey Punkte 1847

Von der Befehlszeile aus:

mocha -t 100000 test.js

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X