19

React コンポーネントをテストしようとしていますが、次のエラーが発生します。

不変違反: 「Connect()」のコンテキストまたは小道具のいずれかで「ストア」が見つかりませんでした。ルート コンポーネントを <Provider> でラップするか、明示的に「store」を prop として「Connect()」に渡します。

テストでコンポーネントをレンダリングしているときにエラーが発生します。

beforeEach(() => {
  Component = TestUtils.renderIntoDocument(<SideMenu />);
});

ページにコンポーネントをレンダリングするときに問題なく動作します。ただし、テストでは、ストアをコンポーネントに明示的に渡すことができません。

誰かが正しい方向を指すことができますか?

4

3 に答える 3

2

ほとんどの場合、テストでコンポーネント自体をインポートすると問題なく動作することがわかりました。

SideMenu.js:

export class SideMenu extends React.Component {
 // implementation
}

export default connect(mapStateToProps,)(SideMenu)

SideMenu.spec.js:

import { SideMenu } from 'path/to/SideMenu.js'

const props = {
  // provide all necessary stubs and mocks for redux props and actions 
}
component = TestUtils.renderIntoDocument(<SideMenu {...props} />);

注: Салман が指摘したように、このアプローチは、store.

于 2015-11-28T17:05:59.557 に答える