У меня была эта проблема в прошлом при использовании более старых версий react-router, которые я решил с помощью: #stubroutercontext" rel="nofollow">stubRouterContext + хакерский способ доступа к экземпляру компонента (используя refs: https://github.com/reactjs/react-router/issues/1140#issuecomment-113174774)
Я думал, что это улучшится в будущем, но я столкнулся с той же проблемой с react-router 2.0 (я не говорю, что это проблема с react-router, но поскольку он использует контекст, это влияет на мои тесты). Итак, у меня есть компонент, который использует контекст для добавления нового состояния в URL-адрес this.context.router.push(...)
, и это правильный путь https://github.com/reactjs/react-router/blob/master/upgrade-guides/v2.0.0.md#programmatic-navigation а>
Я говорю jest.dontMock('react-router')
, но мой тест завершится ошибкой:
TypeError: Cannot read property 'push' of undefined
Это происходит потому, что экземпляр, возвращаемый TestUtils.renderIntoDocument
, будет иметь:
context: Object { router: undefined }
Теперь, в чем здесь настоящая проблема? Это шутка? Я почти уверен, что я не единственный, кто сталкивается с этим, и с тех пор, как ="nofollow">stubRouterContext его нет в официальных документов по react-router больше нет, есть ли для этого общепризнанное решение?
Как мне заставить тест работать? Что в основном имеет правильный контекст и возможность доступа ко всему из экземпляра компонента, возвращаемого TestUtils.renderIntoDocument
.
Я использую реакцию 0.14.7, jest-cli 0.8.2 и реакцию-маршрутизатор 2.0.