Я пытаюсь использовать Jest в своем проекте, как показано ниже, для тестирования моего класса приложения:
it('renders correctly', () => {
const tree = renderer
.create(<Router><App /></Router>)
.toJSON();
expect(tree).toMatchSnapshot();
});
Но я получаю ошибки от модуля поставщика, и ошибка выглядит так:
TypeError: Cannot read property 'addEventListener' of null
at node_modules/hammerjs/hammer.js:222:16
Я понятия не имею, как это исправить





Почему не работает?
renderer.createrenders React components to pure JavaScript objects, without depending on the DOM or a native mobile environment.
Ссылка: https://reactjs.org/docs/test-renderer.html#testrenderercreate
Если вы видите реализацию hammerjs/hammer, вы обнаружите, что addEventListener вызывается в целевом элементе DOM после его обнаружения в визуализированном компоненте. Когда среда DOM отсутствует, целевой элемент DOM оказывается null и, следовательно, ошибкой.
Как это исправить?
If you'd like to assert, and manipulate your rendered components you can use Enzyme or React's TestUtils.
Ссылка: https://facebook.github.io/jest/docs/en/tutorial-react.html#dom-testing
Вы можете использовать Enzyme mount для полного рендеринга DOM, когда у вас есть элементы, которые взаимодействуют с DOM.
http://airbnb.io/enzyme/docs/api/mount.html
Итак, это должно работать:
it('renders correctly', () => {
const tree = mount(<Router><App /></Router>);
expect(tree).toMatchSnapshot();
});