0

サブコンポーネントとストアをスタブ化するためにproxyquireを使用してきましたが、react-dndコンテキストにラップされたコンポーネントで不変違反に遭遇しました。

警告: 失敗したコンテキスト タイプ: 必要なコンテキスト dragDropManager が DragSource(Card) で指定されていませんでした。エラー: 不変違反: カードのコンテキストでドラッグ アンド ドロップ マネージャーが見つかりませんでした。アプリの最上位コンポーネントを DragDropContext でラップしてください。続きを読む: http://gaearon.github.io/react-dnd/docs-troubleshooting.html#could-not-find-the-drag-and-drop-manager-in-the-context

エラーを示すためにレポをまとめました:https://github.com/cmelion/react-hot-boilerplate/tree/Invariant-Violation-DNDを参照してください

実行するには実行します

npm install 
npm test
4

1 に答える 1

0

理由はよくわかりませんが、proxyquire によって返されたスタブに "stub['@global'] = true" を設定すると、不変違反が発生しました。

@global を設定しないと、React.TestUtils が正しく機能しなくなります。これも理由がわかりません。

最終的な解決策は、ブール値を使用して条件付きで @global を設定し、古き良き querySelectorAll にフォールバックするという組み合わせでした。

const subComponent = React.findDOMNode(comp).querySelectorAll('.simple-subcomponent');
should(subComponent.length).equal(1);

リポジトリは、「通常の」proxyquire スタブと「特別な」ケースの違いを示すテスト ケースで更新されました。

于 2015-08-25T19:48:53.390 に答える