私が使用して解決した古いバージョンのreact-routerを使用しているときに、過去にこの問題がありました:stubRouterContext +コンポーネントインスタンスにアクセスするハックな方法(参照を使用:https ://github.com/reactjs/react-router/issues/ 1140#issuecomment-113174774 )
これは将来改善されると思っていましたが、react-router 2.0 で同じ壁にぶつかっています (これが react-router の問題だと言っているわけではありませんが、コンテキストを使用するため、テストに影響します)。したがって、コンテキストを使用して新しい状態を URL にプッシュするコンポーネントがありthis.context.router.push(...)
ます
。 #プログラマティック ナビゲーション
私は言っていますjest.dontMock('react-router')
が、私のテストは次のように失敗します:
TypeError: Cannot read property 'push' of undefined
これは、によって返されるインスタンスが次のようになるために発生しますTestUtils.renderIntoDocument
。
context: Object { router: undefined }
さて、ここで本当の問題は何ですか?ジェストですか?これに遭遇したのは私だけではないと確信しています.stubRouterContext以来、react-routerの公式ドキュメントにはもうありません.これに対する広く受け入れられている解決策はありますか?
テストを機能させるにはどうすればよいですか?これは、基本的に正しいコンテキストを持ち、によって返されるコンポーネント インスタンスからすべてにアクセスできることTestUtils.renderIntoDocument
です。
反応 0.14.7、jest-cli 0.8.2、および反応ルーター 2.0 を使用しています。