Ошибка при выполнении модульного теста в компоненте с реактивным восстановлением - PullRequest
0 голосов
/ 07 января 2019

Я пытаюсь проверить подключенный компонент (реакт-редукс) с помощью 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 Ответ

0 голосов
/ 07 января 2019

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

если вы импортируете его, например, с помощью приложения импорта из './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'
...