bluebird - Предупреждение: обещание было отклонено с ошибкой: [Ошибка объекта] - PullRequest
0 голосов
/ 07 ноября 2018

При возникновении исключения из функции .then обещания синей птицы появляется следующее предупреждающее сообщение: Warning: a promise was rejected with a non-error: [object Error].

Это происходит при запуске тестов с использованием:

  • узел 9.6.1
  • Синяя птица 3.5.3
  • карма 2.0.0
  • Чай 4.2.0
  • Чай как обещано 7.1.1

Вот небольшой пример кода, который генерирует экземпляр Error после разрешения обещания, используя реализацию узла и bluebird:

import chai from 'chai'
import bluebird from 'bluebird'
import promised from 'chai-as-promised'
const { expect } = chai.use(promised)

describe('warning when promise throws', () => {
  const dummyErrorMessage = 'dummy error message'

  async function throws (p) {
    await p.resolve().then(() => {
      throw new Error(dummyErrorMessage)
    })
  }

  describe('throws', () => {
    it('with vanilla promise', async () => {
      await expect(throws(Promise))
        .to.be.rejectedWith(Error, dummyErrorMessage)
    })

    it('with bluebird promise', async () => {
      await expect(throws(bluebird))
        .to.be.rejectedWith(Error, dummyErrorMessage)
    })
  })
})

Какие выходы:

  warning when promise throws
    throws
      ✓ with vanilla promise
WARN LOG: 'Warning: a promise was rejected with a non-error: [object Error]'
      ✓ with bluebird promise

Документация по bluebird предлагает возможные объяснения этого предупреждения, но оно не подходит (http://bluebirdjs.com/docs/warning-explanations.html#warning-a-promise-was-rejected-with-a-non-error).

Может кто-нибудь объяснить, если это ожидается и почему, пожалуйста?

...