Как заставить .toThrow реагировать на бросок - PullRequest
0 голосов
/ 31 марта 2019

Jest .toThrow не реагирует на ошибку throw ('некоторый текст')

Этот код выдает исключение

if (!['diff', 'plain', 'json'].includes(format.toLowerCase())) {
    throw Error('Wrong format');
  }

Я пытаюсь обработать его в тестах с

test('tree, yml, plan, Exception_', () => {
  const fileName1 = '__tests__/__fixtures__/before.json';
  const fileName2 = '__tests__/__fixtures__/after.jso';
  expect(genDiff(fileName1, fileName2)).toThrow();
});

Но этот тест не пройден

Это странно, потому что это обрабатывается правильно:

test('t', () => {
  expect(() => {
    throw Error();
  }).toThrow();
});

Как решить эту проблему?

Вот функция

const genDiff = (fileName1, fileName2, format = 'diff') => {
  const wrongFiles = checkForWrongFiles([fileName1, fileName2]);
  if (wrongFiles.length !== 0) {
    const errorMessage = `Could not find this files:\n ${wrongFiles.join('\n')}`;
    throw errorMessage;
  }
  if (!['diff', 'plain', 'json'].includes(format.toLowerCase())) {
    throw Error('Wrong format');
  }
  ...
  return result;
};

1 Ответ

0 голосов
/ 31 марта 2019

Вы должны обернуть вызов функции, которая выдает, в противном случае ошибка не отслеживается утверждениями (см. Примечание внизу).Обратите внимание, что я обернул вызов genDiff внутри функции.

test('tree, yml, plan, Exception_', () => {
  const fileName1 = '__tests__/__fixtures__/before.json';
  const fileName2 = '__tests__/__fixtures__/after.jso';
  expect(() => genDiff(fileName1, fileName2)).toThrow();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...