Mocha 测试需要一个 done() 来结束,然后说 "Resolution method is overspecified. Specify a callback *or* return a Promise; not both."

Mocha tests requires a done() to conclude, but then says "Resolution method is overspecified. Specify a callback *or* return a Promise; not both."

mocha 测试的一个非常烦人的问题。

如果我什么都不做,它会挂起,给我

Error: Timeout of 10000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves.

如果执行 `Promise.resolve()。最后

Error: Resolution method is overspecified. Specify a callback or return a Promise; not both.

如果我 done() 就位。

为什么会这样,我该如何解决?

这是我的测试结果:

it('test my middleware' function (done) {
  const req = MockRequest()
  const res = MockResponse()

  const next = (e) => {
    if (e) {
      return done()
    }
    try {
      assert.ok(somethingThatPasses())

      done()
    } catch (err) {
      done(err)
    }
  }

  myMiddleware(req, res, next)
})

不确定这是否会帮助遇到同样问题的任何人,但我最终通过将 done() 移到回调之外,在调用 myMiddleware 之后使其正常工作。

不幸的是,我仍然不能 100% 确定最初的问题是什么。