До того, как я заменил импорт на React.lazy, все тесты прошли нормально. Но после замены журнал ошибок сообщил мне, что какой-то код вызвал исключение (но без подробностей об ошибке)
A React component suspended while rendering, but no fallback UI was specified.
Add a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.
in Unknown (created by Context.Consumer)
in Route (created by SuspenseComponent)
in SuspenseComponent
in Router
in Provider
at throwException (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:11518:13)
at handleError (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:12502:7)
at callback (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:12336:9)
at eventHandler (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:1825:24)
at Scheduler_runWithPriority (node_modules/scheduler/cjs/scheduler.development.js:653:12)
at runWithPriority (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:1775:10)
at flushSyncCallbackQueueImpl (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:1820:7)
at flushSyncCallbackQueue (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:1808:3)
at scheduleWork (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:11776:9)
at updateContainer (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:14747:3)
at Object.create (node_modules/react-test-renderer/cjs/react-test-renderer.development.js:15455:5)
at checkOrCreateTheSnapshotOfState (__test__/user.test.js:27:34)
at Object.<anonymous> (__test__/user.test.js:48:9)
Итак, у меня есть код, который проверяет снимок
const checkOrCreateTheSnapshotOfState = (state, path) => {
let store;
const mockStore = configureStore([thunk]);
store = mockStore(state);
const history = createMemoryHistory();
history.push('/' + path);
const SuspenseComponent = () => {
return <Suspense fallback={"Loading..."}><Route exact
path="/:user"
component={User}/></Suspense>
};
const element = renderer.create(<Provider store={store}><Router
history={history}><SuspenseComponent/></Router></Provider>).toJSON();
expect(element).toMatchSnapshot();
};
it("should render User component correctly when user is found and another user authed and post is active", () => {
checkOrCreateTheSnapshotOfState(userState.userAuthedAndPostIsActive, userData.login);
});
Итак, проблема в что я не знаю, что не так с кодом компонента и тестирования, потому что, когда я запускаю приложение, все работает нормально. В приведенном выше коде я добавил задержку, но она всегда получает сообщение «Загрузка ...», что мне делать? Ждать каких-то ленивых компонентов, может быть?