2017-09-06 9 views
0
it('has working hooks', async() => { 
    setTimeout(() => { 
    console.log("Why don't I run?") 
    expect(true).toBe(true) 
    }, 15000) 

ich schon diese Antwort überprüft haben, Jest Dokumentation und mehrere Threads GitHub:Jest SetTimeout Pause nicht Test

Disable Jest setTimeout mock

Gerade jetzt, die Funktion innerhalb des Timeout nicht ausgeführt. Wie kann ich Jest veranlassen, die Ausführung des Tests für 15 Sekunden anzuhalten und dann die innere Funktion auszuführen?

Danke!

Antwort

1
it('has working hooks', async() => { 
    await new Promise(res => setTimeout(() => { 
    console.log("Why don't I run?") 
    expect(true).toBe(true) 
    res() 
    }, 15000) 
} 

oder

it('has working hooks', done => { 
    setTimeout(() => { 
    console.log("Why don't I run?") 
    expect(true).toBe(true) 
    done() 
    }, 15000) 
} 
+0

Vielen Dank! Entschuldigung für die verspätete Genehmigung. College ist passiert. Können Sie mehr erklären, warum das funktioniert, und den Fehler mit meinem Code? Wenn jemand ein Problem mit den oben genannten Problemen hat, versuchen Sie, die Timeout-Zeit von 15000 zu verringern, da im Test-Framework ein eingebautes Maximum vorhanden ist. – Nick

+0

In deinem Code hast du 'done' Parameter nicht übergeben, also wird' jest' nur bis zum Ende laufen, obwohl du 'async' hast, aber du hattest keine' await' um den Code zu halten. Ich kann antworten, die erste verwenden "async" mit "erwarten", und die zweite Verwendung "fertig", beide werden den Code halten. Ich hoffe, ich habe ein bisschen erklärt. – Ron

+0

mit expect before done macht es einfach undefiniert für mich. irgendeine Idee? – Genjuro