大佬教程收集整理的这篇文章主要介绍了node.js – 对于异步测试和挂钩,确保调用“done()”;如果返回Promise,请确保它已解决,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
Error: Timeout of 2000ms exceeded. For async tests and hooks,ensure "done()" is called; if returning a Promise,ensure it resolves.
我的测试代码是,我已完成回调但仍然收到错误来调用done();
it('remove exisTing subdocument',(donE) => { const Vic = new User({ name: 'Vic',posts: [{ title: 'Leaning Nodejs' }] }); vic.save() .then(() => User.findOne({ name: 'Vic' })) .then((user) => { const post = user.posts[0]; post.remove(); return user.save(); }) .then(() => User.findOne({ name: 'Vic' })) .then((user) => { assert(user.posts.length === 0); done(); }); });
当出现错误/错误断言时,将在promise中引发错误.这导致承诺拒绝.一旦拒绝完成,从未调用过,mocha报告超时.
我通过写一个.catch块并用它来链接它来解决这个问题:
it('resolves',(donE) => { fooAsyncPromise(arg1,arg2).then((res,body) => { expect(res.statusCodE).equal(incorrectvalue); done(); }).catch(donE); });
Wietse’s blog中提到的其他方法是:
链接一个then(done,donE)来处理promise的拒绝和拒绝.
it('resolves',(donE) => { resolvingPromise.then( (result) => { expect(result).to.equal('promise resolved'); }).then(done,donE); });
回报承诺:
it('resolves',() => { return resolvingPromise.then( (result) => { expect(result).to.equal('promise resolved'); }); });
使用异步/等待:
it('assertion success',async () => { const result = await resolvingPromise; expect(result).to.equal('promise resolved'); });
以上是大佬教程为你收集整理的node.js – 对于异步测试和挂钩,确保调用“done()”;如果返回Promise,请确保它已解决全部内容,希望文章能够帮你解决node.js – 对于异步测试和挂钩,确保调用“done()”;如果返回Promise,请确保它已解决所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。