首页 > 解决方案 > 摩卡柴解决多个承诺

问题描述

我正在尝试对此承诺进行测试,但出现此错误:

“错误:超过 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

标签: node.jsasynchronousmocha.jstddchai

解决方案


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();
    });

});

推荐阅读