【问题标题】:Force mocha to require a return value?强制 mocha 要求返回值?
【发布时间】:2021-10-30 07:13:30
【问题描述】:

有没有办法强制 mocha 要求测试返回值?在测试 Promises 时,我会这样做:

it("some test", () => {
  return someFunctionThatReturnsAPromise()
    .then(result => {
      assert.ok(result)
      // ...
    })
})

无论承诺是解决还是拒绝,一切都会通过/失败。但是,如果我忘记了“返回”(我经常这样做),那么即使 Promise 被拒绝,测试也会通过。

注意:我正在使用 npm-current mocha 和 chai-assert。

【问题讨论】:

    标签: javascript promise mocha.js chai


    【解决方案1】:

    将您的测试转换为async test

    it("some test", async () => {
      asset.ok(await someFunctionThatReturnsAPromise())
    })
    
    

    【讨论】:

    • 是的,我想到了这一点,这就是我最初编写测试的方式,但非异步/等待等待似乎更清晰。我宁愿不要到处都用 async/await 来混淆所有测试。
    • 如果您不想使用异步测试,那几乎是不可能的,而且您的问题与stackoverflow.com/questions/9121902/… 非常相似。
    【解决方案2】:

    我可以通过将 mocha 的 asyncOnly 选项设置为 true (https://mochajs.org/api/mocha) 来解决此问题。

    不幸的副作用是现在所有的测试都必须返回一个 Promise(或调用 done())。不过这对我来说更可取...到目前为止,只有我的一个测试模块 (*.test.js) 没有这样做,但我可以从那些现在,直到我弄清楚如何在每个模块的基础上更改 mocha.asyncOnly。

    【讨论】:

      猜你喜欢
      • 2021-08-04
      • 1970-01-01
      • 1970-01-01
      • 2017-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-16
      • 1970-01-01
      相关资源
      最近更新 更多