У меня есть приложение реагирования, которое используетact-router-dom для некоторых компонентов.
Приложение правильно работает с маршрутизаторами, но я хочу интегрировать модульное тестирование и интеграционные тесты. Я решил использовать Jest and Storybook.
Я получаю эту ошибку TypeError: parentInstance.children.indexOf is not a function
при запуске тестов. Это связано с тестированием, когда он пытается протестировать любой компонент, вызываемый между <Router>
.
Component.test. js
import React from 'react';
import ReactDOM from 'react-dom';
import { configure } from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';
import { cleanup } from "@testing-library/react";
import {BrowserRouter as Router } from 'react-router-dom'
import Component from './ComponentFile';
afterEach(cleanup);
configure({ adapter: new Adapter() });
beforeAll(() => {
ReactDOM.createPortal = jest.fn((element, node) => {
return element
})
});
describe('renders without crashing', () => {
it('renders no input props without crashing', () => {
const div = document.createElement('div');
ReactDOM.render(
<Router>
<Component />
</Router>, div)
});
});
Component.stories. js
import React from 'react'
import { MemoryRouter, BrowserRouter as Router } from 'react-router-dom'
import { action } from '@storybook/addon-actions'
import Component from './ComponentFile';
export default {
title: '../Component',
component: Component,
};
export const Component = () => {
return (
<Router>
<Component />
</Router>
)}
Это правильно отображает в Storybook, но при запуске storyshots тест не пройден.
storyshot.jest. js
import initStoryshots from '@storybook/addon-storyshots';
initStoryshots({});