【问题标题】:Test with mocha and chai to see if a promise is resolved or rejected用 mocha 和 chai 进行测试,看看一个 Promise 是被解决还是被拒绝
【发布时间】:2019-10-25 06:35:39
【问题描述】:

我编写了一个带有一些参数的函数,在函数内部它使用了一个类,该类具有来自 3rd 方库的函数,该函数返回一个 Promise,我在我自己的函数中返回这个 Promise 的结果。喜欢:

return client.track(data) // client.track is from a 3rd party lib that should return a promise 

现在我想在我的 mocha + chai 测试文件中测试 promise 的返回。我用输入导入这个函数,我应该得到结果。类似:

const result = await myfunc(x,y) // Should return the result of a promise 

现在我想测试在 mocha + chai 中,promise 是否真的被解决或拒绝了,比如使用

chai.expect(...)

我该怎么做?

【问题讨论】:

    标签: javascript unit-testing promise mocha.js chai


    【解决方案1】:

    看看 npm 包chai-as-promised(https://www.npmjs.com/package/chai-as-promised)。它是对提供承诺支持的 chai 库的扩展。

    您可以通过以下方式进行设置

    const chai            = require("chai")
    const chaiAsPromised  = require("chai-as-promised")
    
    chai.use(chaiAsPromised)
    chai.should()
    
    promiseFunction(args).should.be.rejectedWith(SomeError)
    promiseFunction().should.eventually.be.a('array')
    
    

    查看文档以更好地了解此插件的强大功能:)

    【讨论】:

    • 有趣,会研究一下。当我为一个想要尽可能多的依赖项的大项目做这件事时,你知道这是否可以用普通的 chai 来完成吗?即使它可能更混乱,我也会更喜欢它进行一次性承诺测试
    • 我最初遇到了同样的问题,我永远无法让 vanilla Chai 与 Promise 一起工作。如果它确实让您感觉更好,chai-as-promised 包将得到 Chai 背后团队的正式认可 (chaijs.com/plugins/chai-as-promised)
    猜你喜欢
    • 2014-07-22
    • 2015-10-28
    • 2015-01-25
    • 2019-07-18
    • 2023-04-03
    • 2019-10-25
    • 1970-01-01
    • 2015-12-01
    • 2019-02-04
    相关资源
    最近更新 更多