Redux Container Unit Testing - Невозможно получить доступ к реквизиту для обернутого компонента

После обновления React v6 мои существующие тестовые наборы для компонента не пройдены.

Вот мой код контейнера компонента TodoContainer.jsx:

import { connect } from 'react-redux';

import Todo from './Todo';
import { initialLoadExecuted } from '../../actions/LoadActions';

const mapStateToProps = state => ({
  isCollapsed: true,
  pinnedTiles: false,
});

const mapDispatchToProps = dispatch => ({
  dispatchInitialLoadExecuted: (tiles) => {
    dispatch(initialLoadExecuted(tiles));
  },
});

export default connect(mapStateToProps, mapDispatchToProps)(Todo);

Вот мой тестовый код TodoContainer.test.jsx:

    import React from 'react';
    import configureStore from 'redux-mock-store';
    import {Provider} from 'react-redux';
    import TodoContainer from '../../../../src/todo-component/components/Todo/TodoContainer';
    import { initialLoadExecuted } from '../../../../src/todo-component/actions/LoadActions';

    const mockStore = configureStore();
    let store;

    describe('Todo Container', () => {
      beforeEach(() => {
        store = mockStore({
        });

      it('maps state props correctly', () => {
        const wrapper = shallow(<TodoContainer store={store}/>);
        wrapper.prop('dispatchInitialLoadExecuted')('Test String);
        // Expect statements
      });
    });

Я получаю ошибку:

Нарушение инварианта: Передача избыточного хранилища в реквизит была удалена и ничего не делает. Чтобы использовать пользовательское хранилище Redux для определенных компонентов, создайте пользовательский контекст React с помощью React.createContext() и передайте объект контекста провайдеру React-Redux и определенным компонентам, таким как: . Вы также можете передать параметр {context: MyContext} для подключения.

Есть ли способ передать хранилище через провайдера при доступе к реквизиту, таким же образом?

1 ответ

Похоже, что response-redux v6.0.0 теперь поддерживает новый API-интерфейс контекста, добавленный в React v 16.4.0 (а также требует, чтобы теперь была версия реакции).

Я смог решить эту проблему и сохранить шаблон mockStore, установив response-redux@5.1.1 и Reaction@16.3.0 (до того, как они представили Context API).

Дальнейшее тестирование: я могу использовать response@16.7.0 до тех пор, пока я использую response-redux@5.1.1

На вкладке "Вопросы о реактивном редуксе на github" продолжается обсуждение: https://github.com/reduxjs/react-redux/issues/1161

Не долгосрочное решение, так как я застрял в этой версии React, но она прошла тест, и я смог получить 100% покрытие кода.

Другие вопросы по тегам