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

我已經查看了這個答案,玩笑文檔和幾個GitHub的主題:玩笑的setTimeout不暫停測試

Disable Jest setTimeout mock

眼下,超時內部功能不運行。 如何讓Jest暫停執行測試15秒,然後運行內部函數?

謝謝!

回答

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

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

謝謝!對於遲到的批准感到抱歉。大學發生了。你能提供更多的解釋,爲什麼這個工程,以及我的代碼錯誤?另外,如果任何人遇到上述問題,請嘗試將超時時間從15000秒降低,因爲超出了測試框架中的內置最大值。 – Nick

+0

在你的代碼中,你沒有傳遞'done'參數,所以'jest'只會運行到最後,儘管你有'async',但是你沒有任何'await'來存放代碼。我可以回答,第一個使用'async'和'await',第二個使用'done',兩者都會保存代碼。我希望我解釋一下。 – Ron

+0

使用期望完成之前只是讓它運行undefinetly我。任何想法? – Genjuro