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