摩卡柴解决多个承诺

Posted

技术标签:

【中文标题】摩卡柴解决多个承诺【英文标题】:Mocha chai resolve multiple promises 【发布时间】:2019-11-15 14:25:24 【问题描述】:

我正在尝试对这个 Promise 进行测试,但我收到了这个错误:

“错误:超过 2000 毫秒的超时。对于异步测试和钩子,请确保调用了“done()”;如果返回 Promise,请确保它已解决。(C:\Users\Ranieri\Documents\Projetos\Node Js\ testestest\test\libs\registerUser.test.js)"

我已经增加了超时时间,但仍然没有解决问题。

我在***上搜索了这里的异步测试,没有发现任何类似的东西或任何人

我的测试代码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

【问题讨论】:

【参考方案1】:

selectUser 返回一个Promise,您需要等待它解决才能对它进行断言。这可以通过两种方式实现:

在返回的 Promise 上使用 then,在该块中调用 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();
    );

);

【讨论】:

同样的错误......,我知道 promesis 是如何工作的,然后我尝试了,最后...... 我添加了一个使用done 方法的示例。希望这对你有用!

以上是关于摩卡柴解决多个承诺的主要内容,如果未能解决你的问题,请参考以下文章

html 摩卡/柴锅炉

嵌套承诺 - 摩卡 - 超过超时

返回承诺时摩卡超过2000毫秒超时[重复]

如果指定了多个类型和有效负载选项,为啥 Redux Promise 会返回未解决的承诺?

等待所有承诺解决

等待所有承诺解决