据我所知,如果before
方法中出现错误,mocha测试框架将抛出此错误:
> $(npm bin)/mocha test/*.js
1) "before all" hook
我已经尝试了许多不同的方法来捕捉这个错误,但似乎没有任何效果:
before(function(done) {
server = require('../app')
try {
server.listen(process.env.PORT)
done()
// server.initialize()
// .then(() => {
// console.info('listening on', process.env.PORT)
// server.listen(process.env.PORT, done)
// })
// .catch(err => {
// console.log(err)
// done(err)
// })
} catch (err) {
console.log('outer error', err)
done(err)
}
})
从注解掉的代码中可以看到,在服务器真正开始侦听之前,我需要完成一个异步操作,唯一可行的方法是在before
块之外初始化服务器,然后在before
函数中立即调用done()
,或者传递一个不带参数的函数,但是这仍然是一个问题,因为在测试开始时服务器还没有初始化。
令人抓狂的是,当我连接到调试器时,这段代码仍然有效,所以我甚至无法检查出了什么问题。
3条答案
按热度按时间guz6ccqo1#
当我发布这个问题时,我偶然发现了this bug,这让我发现我需要在
before
函数的开头调用this.enableTimeouts(false)
,如下所示:希望这能帮助其他人进行几个小时的调试。
p5fdfcr12#
它已经有一点时间,因为它被要求,但为未来的读者在这里,我们去:
您可以使用
mocha test/*.js --timeout 5000
命令运行测试,仅此而已。但是如果您使用
npm test
命令运行测试,只需像这样编辑您的package.json
文件:5fjcxozz3#
不知道是否有人仍然看这个线程,但我仍然有超时的错误,有趣的是试图运行测试两次工程.使用摩卡茶测试的Express应用程序试图让续集销毁.这是我认为导致错误的一部分:
“1)/reader在所有”挂钩“/reader之前”
验证错误