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