繁体   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