现在测试 React Native 组件的首选方法似乎是结合使用 mocha、react-native-mock 和酶来浅渲染组件。
问题在于,浅层渲染只深入一层,有时组件具有嵌套视图,需要您测试额外的一两层。
理论上,酶支持mount()
完全渲染组件,但实际上这会失败,因为react-native-mock 的View
mock 不会递归到 children中。
鉴于这些限制,人们如何在比一个渲染级别更深的地方测试他们的组件?
现在测试 React Native 组件的首选方法似乎是结合使用 mocha、react-native-mock 和酶来浅渲染组件。
问题在于,浅层渲染只深入一层,有时组件具有嵌套视图,需要您测试额外的一两层。
理论上,酶支持mount()
完全渲染组件,但实际上这会失败,因为react-native-mock 的View
mock 不会递归到 children中。
鉴于这些限制,人们如何在比一个渲染级别更深的地方测试他们的组件?
我们解决了mount()
使用酶来完全渲染 React Native 组件的问题。我们写在https://blog.joinroot.com/mounting-react-native-components-with-enzyme-and-jsdom/
如果您使用我们的 fork,react-native-mock-render
并设置 jsdom,您将能够挂载组件。
我能够通过将我的组件测试从 mocha 切换到 jest 并按照此处的说明进行快照测试来解决这个问题:https ://facebook.github.io/jest/docs/tutorial-react-native.html
然后我在 package.json 中将 jest 添加到我现有的测试目标中:
"test": mocha … && jest"
需要注意的一件事是,我确实必须按照说明为我期望开箱即用的东西添加模拟(例如。TextInput
),以及moduleNameMapper
用于映射一些不是的本机组件妥善解决。