Реакция-скрипты 2.1.8 -> 3.0.0 прерывает "подключенные" тесты редукса? - PullRequest
0 голосов
/ 30 апреля 2019

Следуя простым рекомендациям по тестированию найденных подключенных компонентов здесь У меня были тесты этого формата, проходящие в течение нескольких месяцев:

import ConnectedFaultReport, {FaultReport} from [...];
describe('FaultReport (connected) component tests', () => {
  let container = shallow(<ConnectedFaultReport  />);
  it('Should render the Redux connected component', () => {
    expect(container.length).toEqual(1)
  });
})

После обновления ответных сценариев до 3.0.0 IТеперь получите ужас:

Invariant Violation: Could not find "store" in the context of "Connect(FaultReports)..."

ошибка.Мне пришлось пройти через все мои более простые связанные тесты и реализовать:

import { Provider } from "react-redux";
import configureMockStore from "redux-mock-store";

const mockStore = configureMockStore();
const store = mockStore({});

  describe('FaultReport (connected) component tests', () => {
    let container = shallow(
      <Provider store={store}>
        <ConnectedFaultReport />
      </Provider>
    );
    it('Should render the Redux connected component', () => {
      expect(container.length).toEqual(1)
    });
  })

Я в порядке с redux-mock-store, но это огромное количество оттока и рефакторинга.Я единственный, кто видел это после обновления react-scripts?

@ markerikson: я был , а не , пропустив store ранее как опору.Проведенные обновления приведены ниже (на этот раз я сохранил вывод ncu, поскольку то же самое произошло в отдельном проекте).Просто заметил, что react-redux получил полную версию ...

react-redux               ^6.0.1  →   ^7.0.3
react-scripts              2.1.8  →    3.0.0
enzyme-adapter-react-16  ^1.11.2  →  ^1.12.1

1 Ответ

0 голосов
/ 30 апреля 2019

Я на самом деле удивлен, что поверхностный рендеринг <ConnectedFaultReport> вообще работал с React-Redux v6. У нас было , и несколько пользователей сообщили, что это перестало работать полностью . Кроме того, если вы не передавали хранилище в качестве реквизита или , оборачивая его в <Provider>, тогда существующий тест должен дать сбой - подключенный компонент всегда требуется магазин, точка.

Начиная с v7, вы должны иметь возможность снова передать магазин непосредственно в качестве реквизита (как в v5 и более ранних версиях), например <ConnectedFaultReport store={store} />.

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