[英]mocha on test fail cannot do asynchronous function
我正在使用mocha的runner.on("fail", postProcessFunction)
在測試失敗時執行一些后期處理。
請參閱: https : //github.com/mochajs/mocha/blob/master/lib/runner.js#L58
我的問題是在postProcessFunction
函數中我需要調用一個函數slowFunction
來創建一個文件並返回一個promise。 承諾需要10秒才能解決,到那時,mocha已經進入下一次測試或完全停止執行。 slowFunction
函數沒有完成執行,永遠不會創建文件。
我已經試過處理與承諾promise.then(something)
,並包裹postProcessFunction
在Q.async的再yield
ING到slowFunction
,但我似乎從來沒有得到它等待緩慢的功能完成后再繼續。
注意:我不能使用全局的afterEach,因為測試已經具有套件級別afterEach,它將在全局afterEach之前執行。 我需要在失敗時立即執行slowFunction
您可以在afterEach
檢測到測試失敗,這將允許您使用標准的mocha異步設置。
afterEach('Test failure debug', function(){
debug('Test result', this.currentTest)
if (this.currentTest.state === 'failed') {
return page.source().then(src => debug('Page source', src))
}
})
在這種特殊情況下, page
變量的作用域在describe
塊中,因此它在測試和前/后助手中都可用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.