【问题标题】:Test using react-router-native's Link blows up with "TypeError: Cannot read property 'default' of undefined"使用 react-router-native 的链接进行测试时出现“TypeError:无法读取未定义的属性‘默认’”
【发布时间】:2019-08-11 18:16:35
【问题描述】:

对于使用 react-router、jest 和 react-test-renderer 的 react-native 应用程序,<Link> 组件似乎不可测试。 react-router documentation 没有提到必须为 react-native 做任何特别的事情(嘲笑?),我的测试只有在 react-router 的 <Link> 组件包含在正在渲染的树中时才会爆炸。其他组件(例如<Text>、<Router>)没有这个问题。

This basic react-native project 重现爆炸测试。否则,该应用程序会在手机中按预期构建和运行。

我有配置问题吗?它是无证的,还是我只是忽略了它?还是我应该放弃并改用酶?那会有帮助吗?

这是显着的测试输出:

  TypeError: Cannot read property 'default' of undefined
      at new Link (minimal-bug-repro/node_modules/react-router-native/Link.js:5:379)
      at constructClassInstance (minimal-bug-repro/node_modules/react-test-renderer/cjs/react-test-renderer.development.js:3438:22)                                                                                                                                
      at updateClassComponent (minimal-bug-repro/node_modules/react-test-renderer/cjs/react-test-renderer.development.js:6764:9)                                                                                                                                   
      at beginWork (minimal-bug-repro/node_modules/react-test-renderer/cjs/react-test-renderer.development.js:7721:20)
      at performUnitOfWork (minimal-bug-repro/node_modules/react-test-renderer/cjs/react-test-renderer.development.js:11392:16)                                                                                                                                    
      at workLoop (minimal-bug-repro/node_modules/react-test-renderer/cjs/react-test-renderer.development.js:11424:28)
      at renderRoot (minimal-bug-repro/node_modules/react-test-renderer/cjs/react-test-renderer.development.js:11507:11)                                                                                                                                           
      at performWorkOnRoot (minimal-bug-repro/node_modules/react-test-renderer/cjs/react-test-renderer.development.js:12395:11)                                                                                                                                    
      at performWork (minimal-bug-repro/node_modules/react-test-renderer/cjs/react-test-renderer.development.js:12307:11)                                                                                                                                          
      at performSyncWork (minimal-bug-repro/node_modules/react-test-renderer/cjs/react-test-renderer.development.js:12281:7) { componentStack:                                                                                                                     

【问题讨论】:

    标签: react-native react-router-v4 react-test-renderer react-router-native


    【解决方案1】:

    将 jest 升级到 >= 24.0.0,删除 jest.config.js 的 transform: 部分,并切换到普通的 preset: 'react-native'。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-14
      • 2017-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多