«Не удалось найти магазин» после переноса компонента с поставщиком контекста в Jest - PullRequest
0 голосов
/ 25 июня 2019

После упаковки компонента React с соответствующим поставщиком хранилище все еще не найдено в среде jest-тестирования. Есть ли что-то, чего мне не хватает, или есть другой способ сделать это?

Это практика, которая работает для других магазинов, и я использовал с другими компонентами, поэтому я не вижу причины, почему это не должно работать. Средство визуализации должно создавать объект, обернутый TextContext, из которого он должен прочитать, чтобы заполнить поля.

Контекст

import { connect } from 'react-redux';
import React, { createContext } from 'react';

export const TextContext = createContext({});

export function TextProvider({ children, text }) {
  return <TextContext.Provider value={text}>{children}</TextContext.Provider>;
}

export const TextConsumer = TextContext.Consumer;
function renderComposition(props) {
  const text = {
    ... // some text objects
  };
  return (
    <TextProvider text={text}>
      <Composition {...props} />
    </TextProvider>
  );
}

целевая линия с ошибкой

beforeEach(() => {
...
   subject = mount(renderer.create(renderComposition(props)));
...
)};

с ошибкой

Invariant Violation: Could not find "store" in either the context or props of "Connect(Composition)". Either wrap the root component in a <Provider>, or explicitly pass "store" as a prop to "Connect(Composition)".

Ответы [ 2 ]

0 голосов
/ 26 июня 2019

Оказывается, проблема не была связана, я импортировал компонент, а не подключенный контейнер, поэтому хранилище никогда не устанавливалось.Имена половина битвы получается.Насмешка над магазином - также отличный способ справиться с этим ? благодаря paragxvii

0 голосов
/ 26 июня 2019

Полагаю, вашему компоненту требуется поддельное хранилище, вы можете предоставить его, создав mockReduxState.js

import configureMockStore from "redux-mock-store";

export const createMockStore = state => configureMockStore()(state);

Обновление неудачного теста путем передачи mockedStore.

beforeEach(() => {
...
 let updatedProp = {...props, store:createMockStore};
   subject = mount(renderer.create(renderComposition(updatedProp)));
...
)};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...