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

Je l'ai déjà examiné cette réponse, la documentation Jest, et plusieurs fils GitHub:Jest setTimeout pas une pause essai

Disable Jest setTimeout mock

En ce moment, la fonction à l'intérieur du délai d'attente ne fonctionne pas. Comment Jest peut-il suspendre son exécution du test pendant 15 secondes, puis exécuter la fonction interne?

Merci!

Répondre

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

ou

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

Merci! Désolé pour l'approbation tardive. Collège est arrivé. Pouvez-vous donner plus d'explications sur pourquoi cela fonctionne, et l'erreur avec mon code? En outre, si quelqu'un a un problème avec ce qui précède, essayez de réduire le délai d'expiration de 15000 car il y a un maximum de tests dans le framework de test. – Nick

+0

Dans votre code, vous n'avez pas passé le paramètre 'done', donc' jest' va juste courir jusqu'à la fin, bien que vous ayez 'async', mais vous n'avez pas de' await' pour contenir le code. Je peux répondre, le 1er utilise 'async' avec' await', et le 2ème utilise 'done', les deux maintiendront le code. J'espère avoir expliqué un peu. – Ron

+0

en utilisant attendre avant fait juste le fait fonctionner indéfiniment pour moi. une idée? – Genjuro