我们最近将 React Native 代码库升级到了 React Navigation 的第 5 版,并且在此过程中我们将一些组件从类组件重构为功能组件。这意味着我们正在使用像 useNavigation() 和 useRoute() 这样的钩子。
\n我很难弄清楚如何解决我们在进行单元测试时遇到的问题。看起来导航和路线道具的状态在运行时不可用于测试。例如,我从 Jest 收到以下错误:
\n\xe2\x97\x8f <EULA /> \xe2\x80\xba Rendering \xe2\x80\xba should match to snapshot\n\n TypeError: Cannot read property 'name' of undefined\n\n 27 | const route = useRoute();\n 28 | const authContext = useContext(AuthContext);\n > 29 | const isAcceptPP: boolean = route.name === "AcceptEULA";\n | ^\nRun Code Online (Sandbox Code Playgroud)\n这个错误让我相信,当第 27 行在单元测试的上下文中运行时,它实际上并没有从 useRoute() 返回路由对象。此错误出现在我对该文件的所有测试中。
\n这就是当前测试的样子,我尝试模拟 useRoute 并将路由作为 props 的一部分,但这些似乎没有做任何事情:
\nimport React from "react";\nimport { render, fireEvent, waitFor …Run Code Online (Sandbox Code Playgroud) unit-testing jestjs react-native react-navigation react-hooks