簡體   English   中英

mocha on test fail無法做異步功能

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM