Используя Чай, ожидайте бросок, не ловя обещание отказа - PullRequest
0 голосов
/ 18 мая 2018

Я искал все, как решить эту проблему, но все протестированные мной решения не работают в моем случае.

У меня есть функция, которая возвращает обещание, которое я пытаюсь проверить с помощью Mochaи Chai.

Я размываю параметр, поэтому функция всегда возвращает:

reject ('Причина отклонения')

Вот тест Iпытаюсь запустить:

describe('fuzzing tokenization with 1000 invalid values', () => {

   it('should throw an error - invalid value', async () => {

      for(var i=0; i <= 1000; i++){

          var req = {
              body: {
                  value: fuzzer.mutate.string('1000000000000000')
              },
              user: {
                  displayName: user
              }
          };

          expect(await tokenizer.tokenize(req)).to.throw(Error);

      }

   });

});

Сбой теста:

Ошибка: строка «Неверное значение».было брошено, выдать ошибку:)

Я проверил несколько изменений, таких как упаковка ожидаемого значения в функцию

ожидаемого (async () => {...}).to.throw (Ошибка);

и другие, которые я нашел в Google.Но я не могу заставить это работать.

Чего мне не хватает?

1 Ответ

0 голосов
/ 18 мая 2018

expect().to.throw(Error) будет работать только для функций синхронизации.Если вам нужна похожая функция с использованием асинхронных функций, взгляните на chai-as-обещано

import chaiAsPromised from 'chai-as-promised';
import chai from 'chai';

chai.use(chaiAsPromised)
var expect = chai.expect;

describe('fuzzing tokenization with 1000 invalid values', () => {
  it('should throw an error - invalid value', async () => {
    for (var i = 0; i <= 1000; i++) {
      var req = {
        body: {
          value: fuzzer.mutate.string('1000000000000000')
        },
        user: {
          displayName: user
        }
      };

      await expect(tokenizer.tokenize(req)).to.eventually.be.rejectedWith(Error);
    }
  });
});
...