Ошибка: инвариантное нарушение: тип элемента недействителен только во время тестирования - PullRequest
0 голосов
/ 19 сентября 2019

Файлы:

//index.js

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './containers/App/App.js';
import { Provider } from 'react-redux';
import { store } from './store';

ReactDOM.render(
    (
        <Provider store={store}>
            <App />
        </Provider>
    ),
    document.getElementById('root') || document.createElement("div")
);


//App.js

import React, { useEffect, useState } from "react";
import { getUser } from "../../firebase/user";
import Dashboard from "../Dashboard";
import SignIn from "../SignIn";
import { useSelector, useDispatch } from "react-redux";
import "../../styles/Global.scss";
import "../../styles/App.scss";
import "../../styles/Transitions.scss";
import "../../styles/Form.scss";
import "../../styles/Icons.scss";
import "../../styles/Cursors.scss";

const App = () => {

    const dispatch = useDispatch();

    const userId = useSelector(({ user: { userId } }) => userId);

    const [ content, setContent ] = useState("");

    useEffect(() => { dispatch(getUser()) }, []);

    useEffect(() => {
        if (userId) {
            setContent("dashboard");
        } else if (!userId && userId !== undefined) {
            setContent("sign-in");
        }
    }, [userId])

    console.log("Update App");

    const Content = () => {

        console.log("Update App Content")

        if (userId === undefined) {
            return null;
        }
        if (userId) {

            return <Dashboard />;
        } else {

            return <SignIn />;
        }
    }; 

    return (
        <div className={`content-wrapper ${content}`}>
            {Content()}
        </div>
    );
};

export default App;

//App.test.js

import React from "react";
import { shallow } from "enzyme";

import App from "./App";

describe('App', () => {
    it('should render correctly', () => {
        const Component = shallow(<App />);

        expect(Component).toMatchSnapshot();
    });
});

Полная ошибка:

Первая часть:

Инвариантное нарушение: недопустимый тип элемента: ожидается строка (для встроенных компонентов)или класс / функция (для составных компонентов), но получил: undefined.Вероятно, вы забыли экспортировать свой компонент из файла, в котором он определен, или вы перепутали импорт по умолчанию и имена.

Вторая часть (?!):

Предупреждение: React.createElement:Тип недействителен - ожидается строка (для встроенных компонентов) или класс / функция (для составных компонентов), но получено: undefined.Вероятно, вы забыли экспортировать компонент из файла, в котором он определен, или вы перепутали импорт по умолчанию и имена.

Проверьте код по адресу index.js: 11.

Я знаю, чтоЕсть множество вопросов об этой ошибке, в то время как тестирование реагирует с шуткой и энзимом, а также с оберткой провайдера redux и т. д. Прочитайте многие из них, но, к сожалению, никто не помог.Есть идеи?

...