Неглубокий рендеринг с Redux Container не работает - PullRequest
0 голосов
/ 26 марта 2020

У меня есть очень простой компонент-контейнер, который я хочу сделать снимок теста с использованием энзима мелкого рендерера.

class MyComponent extends Component {
    render() {
        return (
            <h1>Hi there</h1>
        );
    }
}

const mapDispatchToProps = (dispatch) => {
    return {
        someFunc: () => {}
    };
};

export default connect(null, mapDispatchToProps)(MyComponent)

Если я запускаю этот тест:

describe('MyComponent', () => {
    test('snapshot', () => {
        let appComponent =
            <MyComponent/>

        const wrapper = shallow(appComponent);

        let json = wrapper.html();
        expect(json).toMatchSnapshot();
    });
});

, тогда я получаю это ошибка:

> Error: ReactShallowRenderer render(): Shallow rendering works only
> with custom components, but the provided element type was `object`.
> 
>     at ReactShallowRenderer.render (A:\frontend\node_modules\react-test-renderer\cjs\react-test-renderer-shallow.development.js:786:15)
>     at fn (A:\frontend\node_modules\enzyme-adapter-react-16\src\ReactSixteenAdapter.js:668:53)

Если я просто протестирую его как компонент (игнорируя редукс), вот так:

export default class MyComponent extends Component {
    render() {
        return (
            <h1>Hi there</h1>
        );
    }
}

const mapDispatchToProps = (dispatch) => {
    return {
        someFunc: () => {}
    };
};

connect(null, mapDispatchToProps)(MyComponent)

Тогда это будет работать.

Хотя я понимаю, что Я должен просто выполнить поверхностный рендеринг для версии компонента, а не для версии контейнера. Причина, по которой я привожу это, состоит в том, что эти тесты моментальных снимков, которые у меня были на компонентах Redx, работали в течение долгого времени, и теперь внезапно они ломаясь. Я думаю, что это какое-то обновление в редуксе или ферменте, которое внезапно вызывает эти проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...