node.js - 摩卡柴解决多个承诺
问题描述
我正在尝试对此承诺进行测试,但出现此错误:
“错误:超过 2000 毫秒的超时。对于异步测试和钩子,请确保调用了“done()”;如果返回 Promise,请确保它已解决。(C:\Users\Ranieri\Documents\Projetos\Node Js\testestest\test \libs\registerUser.test.js)"
我已经增加了超时时间,但它仍然没有解决问题。
我在stackoverflow上搜索了这里的异步测试,没有发现任何类似的东西或任何人
我的测试代码https://github.com/ran-j/teste
已经尝试过:
expect(Promise.resolve( userPromesie.selectUser(rUser) ) ).to.be.null
return expect(Promise.resolve( userPromesie.selectUser(rUser) ) ).to.be.null
userPromesie.selectUser(rUser).then((result) => result.to.be.null
解决方案
selectUser
返回 aPromise
并且您需要等待它解决才能对它进行断言。这可以通过两种方式实现:
then
在返回的 Promise 上使用,done()
在该块中调用函数。- 使用
async/await
,你声明你的函数async
和你await
的 Promise
下面是一个async/await
方法的例子:
it('should do something with the user', async () => {
const user = await userPromise.selectUser(rUser);
expect(user).to.be.null;
});
我强烈建议阅读 Promises 以获取更多信息:https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise
编辑这是使用 done 方法的示例:
it('should do something with the user', (done) => {
userPromise.selectUser(rUser).then((user) => {
expect(user).to.be.null;
done();
});
});
推荐阅读
- java - Jlist 在框架上不可见
- firebase - 取消订阅来自未知设备的 Firebase 推送通知
- spring-integration - 变压器中的异常处理
- wpf - 获取以超链接为内容的复选框内容
- scala - Not Able to Compile When Mixing In A Trait When Using TableDrivenPropertyChecks
- c# - 使用 C# 在 MySQL DB 中插入来自 JSON 响应的 DateTime
- mysql - 在 Wordpress 中使用 NOT IN 和 NOT BETWEEN 查询的问题
- apache-spark - 指定字符串长度超过 256 的 pyspark 数据帧模式
- javascript - TypeError:超级表达式必须为空或函数
- openxml - OpenXML - 将书签应用于 Word 文档中的段落