как проверить, что метод отбрасывает существующую ошибку, используя Чай и Синон - PullRequest
1 голос
/ 24 мая 2019

У нас есть метод, который принимает в качестве аргументов потенциальную ошибку, вызвавшую более высокий уровень. Мы хотим проверить

handleFailure((msg, err) => {
  if (err) throw err // preserve stack

  console.error(msg);
  process.exit(1);
})

Мы хотим проверить, в случае ошибки, что ошибка выбрасывается. Мы попробовали это:

it('should throw error', () => {
  let error = new Error('someError');

  expect(handleFailure('some message', error)).to.throw(error);
});

Ошибка выдается, я вижу это в консоли. Но он не «захвачен» модульным тестом:

1 failing

  1) command processor
       handleFailure method
         should throw error:
     Error: someError
      at Context.it (tests/commandProcessor.spec.js:111:39)

Как мы можем проверить, что ошибка генерируется с помощью sinon и chai?

1 Ответ

1 голос
/ 24 мая 2019

Проблема с вашим кодом заключается в том, что ожидаемый файл никогда не вызывается, поскольку выдается ошибка перед возвратом из handleFailure.

Один из способов справиться с этим - обернуть ваш код в анонимную функцию, как показано ниже.

 it('should throw error', () => {
    let error = new Error('someError');  
    expect(function(){handleFailure('some message', error)}).to.throw(error);
});
...