При тестировании на отклонение обещаний получение «не годится» при использовании Mocha с chai-as-обещанием. - PullRequest
0 голосов
/ 27 мая 2020

Заранее благодарим за любую помощь!

Проблемные отказы от обещаний при тестировании с использованием Mocha, Chai и Chai в соответствии с обещаниями. sh Я пытался выполнить это с помощью async / await, но не смог. Я решил go основам.

Я ожидал по крайней мере test 3 пройти тест мокко. Что я делаю не так?

Я использую следующий код:

const chai = require('chai');
const chaiAsPromised = require("chai-as-promised")

chai.use(chaiAsPromised)
const should = chai.should()

describe.only('Testing promise tests', () => {
  const errortest = () => Promise.reject('rejecting...')
  it('test 1', () => {
    Promise.reject('rejecting...').should.throw();
  });
  it('test 2', () => {
    errortest.should.throw();
  });
  it('test 3', () => {
    errortest.should.eventually.throw();
  });
});

Вывод моей консоли:

 0 passing (10ms)
  3 failing

  1) Testing promise tests
       test 1:
     AssertionError: expected {} to be a function
      at Context.<anonymous> (test/promise.test.js:17:42)
      at processImmediate (internal/timers.js:456:21)

  2) Testing promise tests
       test 2:
     AssertionError: expected [Function: errortest] to throw an error
      at Context.<anonymous> (test/promise.test.js:22:27)
      at processImmediate (internal/timers.js:456:21)

  3) Testing promise tests
       test 3:
     TypeError: [Function: errortest] is not a thenable.
      at assertIsAboutPromise (node_modules/chai-as-promised/lib/chai-as-promised.js:31:19)
      at Assertion.<anonymous> (node_modules/chai-as-promised/lib/chai-as-promised.js:53:13)
      at Assertion.propertyGetter (node_modules/chai/lib/chai/utils/addProperty.js:62:29)
      at Object.get (<anonymous>)
      at Object.proxyGetter [as get] (node_modules/chai/lib/chai/utils/proxify.js:98:22)
      at Context.<anonymous> (test/promise.test.js:26:22)
      at processImmediate (internal/timers.js:456:21)

1 Ответ

0 голосов
/ 27 мая 2020

Вам нужно вызвать errortest. Прямо сейчас вы просто используете объект функции, и тогда нет смысла делать .should.eventually.throw(). Объект не бросает; только код выполнение можно.

Итак, добавляем круглые скобки: errortest().should.eventually.throw()

...