Для завершения теста Mocha требуется выполнить done (), но затем он говорит: «Метод разрешения слишком задан. Укажите обратный вызов * или *, возвращающий Promise; не оба». - PullRequest
0 голосов
/ 31 января 2020

Очень раздражающая проблема с тестом мокко.

Он зависает, если я ничего не делаю, выдает мне

Ошибка: превышено время ожидания 10000 мс. Для асин c тестов и хуков убедитесь, что вызывается «done ()»; если вы возвращаете обещание, убедитесь, что оно разрешено.

Если выполнить `Promise.resolve (). И наконец

Ошибка: метод разрешения переопределен. Укажите обратный вызов или вернуть обещание; не оба.

, если я сделаю 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)
})

1 Ответ

0 голосов
/ 03 февраля 2020

Не уверен, поможет ли это кому-либо, имеющему ту же проблему, но я наконец-то заставил ее работать, переместив done() за пределы обратного вызова, сразу после вызова myMiddleware.

К сожалению Я все еще не уверен на 100%, в чем заключалась первоначальная проблема.

...