Используйте Error () без исключения в Jest - PullRequest
0 голосов
/ 30 января 2020

У меня есть компонент React <Error />, который может принимать строку или фактический Error() объект.

Этот следующий код Jest / Enzyme работает:

it('renders with error prop', () => {
  const component = shallow(<Error error="Foobar" />);
  expect(component.text()).toMatchSnapshot();
  expect(component.text()).toEqual('Foobar');
});

Однако следующее не:

it('renders with new Error() error prop', () => {
  const error = new Error('Foobar');
  const component = shallow(<Error error={error} />);
  expect(component.text()).toMatchSnapshot();
  expect(component.text()).toEqual('Foobar');
});

Строка new Error() вызывает RangeError: Maximum call stack size exceeded

Я пытался обернуть его в try {} catch () {}, но он просто проглатывает все.

Я пытался сделать это как expect(() => { ... }), но я не могу заставить его запускать утверждения - кажется, что это действительно работает, только если вы хотите передать это в .toThrow()

Сначала это выглядело многообещающе, но на самом деле ничего не посылает до аргумента error в подвохе:

it('renders with new Error() error prop', () => {
  try {
    new Error('Foobar');
  }
  catch (error) {
    const component = shallow(<Error error={error} />);
    expect(component.text()).toMatchSnapshot();
    expect(component.text()).toEqual('Foobar');
  }
});

Есть идеи? Заранее спасибо.

1 Ответ

1 голос
/ 30 января 2020

Попробуйте это в своем тестовом файле:

import Error as ErrorComponent from './error/component.jsx'; //Or wherever this is

Вы также можете попытаться назвать свой компонент Error по-другому.

Надеюсь, это поможет.

...