Javascript 测试失败时的mocha无法执行异步功能

Javascript 测试失败时的mocha无法执行异步功能,javascript,node.js,asynchronous,promise,mocha.js,Javascript,Node.js,Asynchronous,Promise,Mocha.js,我正在使用mocha的runner.on(“fail”,postProcessFunction)在测试失败时执行一些后处理 见: 我的问题是,在后处理函数函数中,我需要调用一个创建文件并返回承诺的函数slowFunction。承诺需要10秒才能解决,到那时,摩卡已经进入下一个测试,或者完全停止执行。slowFunction函数没有完成执行,并且永远不会创建文件 我试着用promise.then(something)来处理promise,并在Q.async中包装后处理函数,然后将转换为慢函数,但我

我正在使用mocha的
runner.on(“fail”,postProcessFunction)
在测试失败时执行一些后处理

见:

我的问题是,在
后处理函数
函数中,我需要调用一个创建文件并返回承诺的函数
slowFunction
。承诺需要10秒才能解决,到那时,摩卡已经进入下一个测试,或者完全停止执行。
slowFunction
函数没有完成执行,并且永远不会创建文件

我试着用promise.then(something)来处理promise,并在Q.async中包装
后处理函数
,然后
转换为
慢函数
,但我似乎永远无法让它等到慢函数完成后再继续


注意:我不能使用全局afterEach,因为测试已经有套件级别的afterEach,它将在全局afterEach之前执行。我需要在出现故障时立即执行
慢速功能

您可以在每次
之后的
中检测到测试故障,这将允许您使用标准的摩卡异步设置

afterEach('Test failure debug', function(){
  debug('Test result', this.currentTest)
  if (this.currentTest.state === 'failed') {
    return page.source().then(src => debug('Page source', src))
  }
})

在这种特殊情况下,
页面
变量的作用域在
描述
块中,因此它在测试和前后帮助程序中都可用

您可以在每次
之后的
中检测到测试失败,这将允许您使用标准的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))
  }
})

在这种特殊情况下,
页面
变量的作用域在
描述
块中,因此它在测试和前后帮助程序中都可用

我已经考虑过这个解决方案,但我的测试已经在每个模块后进行了。我希望在每次测试之后和之后的任何其他测试之前执行此操作。您可以使用async/Await。我已经考虑过此解决方案,但我的测试已经有了afterEach块。我希望它在每次测试之后执行,并且在您可以使用async/await的任何其他测试之后执行