Ошибка при выполнении модульного теста в компоненте с реактивным восстановлением

Я пытаюсь проверить подключенный компонент (реагировать на редукцию) с помощью Jest-энзима. Я использую реактивный магазин. Когда я запускаю свой тест, чтобы найти один div в компоненте, это дает мне эту ошибку.

Invariant Violation: Passing redux store in props has been removed and does not do anything. To use a custom Redux store for specific components, create a custom React context with React.createContext(), and pass the context object to React-Redux's Provider and specific components like: <Provider context={MyContext}><ConnectedComponent context={MyContext} /></Provider>. You may also pass a {context : MyContext} option to connect

Я монтировал и тестировал только компонент без редукции, он работает, но я хочу провести поверхностный тест.

describe("Input Component", () => {
let wrapper;
let store;
beforeEach(() => {
    store = mockStore(initialState);

    wrapper = shallow(<Input store={store} />);
});

it("should rendder without error", () => {
    expect(wrapper.find("div")).toHaveLength(1);
});
});

1 ответ

Как вы импортируете свой компонент?

если вы импортируете его, например, с помощью приложения импорта из "./yourpath/App", то вы фактически удерживаете компонент-оболочку, возвращаемый connect(), а не сам компонент приложения.

Чтобы иметь возможность протестировать сам компонент приложения без необходимости иметь дело с декоратором, необходимо также экспортировать недекорированный компонент:

import { connect } from 'react-redux'

// Use named export for unconnected component (for tests)
export class App extends Component {
/* ... */
}

// Use default export for the connected component (for app)
export default connect(mapStateToProps)(App)

И импортируйте его в свой тестовый файл так:

import { App } from './yourpath/App'
Другие вопросы по тегам