У меня есть компонент 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');
}
});
Есть идеи? Заранее спасибо.