如何测试超过一层深度的 React Native 组件?

How to test React Native components more than one level deep?

目前测试 React Native 组件的首选方法似乎是结合使用 mocha、react-native-mock 和 enzyme 来浅渲染组件。

问题在于浅层渲染只会深入一层,有时组件的嵌套视图需要您测试一两层。

理论上,enzyme 支持 mount() 完全渲染一个组件,但在实践中这失败了,因为 react-native-mock's View mock does not recurse into children.

鉴于这些限制,人们如何测试比一个渲染级别更深的组件?

我能够通过将我的组件测试从 mocha 切换到 jest 并按照此处的说明进行快照测试来解决这个问题:https://facebook.github.io/jest/docs/tutorial-react-native.html

然后我在 package.json 中将 jest 添加到我现有的测试目标中:

"test": mocha … && jest"

需要注意的一件事是,我确实必须按照说明为我希望开箱即用的东西添加模拟(例如 TextInput),以及使用 moduleNameMapper 映射一些未正确解析的本机组件。

我们解决了让 mount() 使用酶来完全渲染 React Native 组件的问题。我们在 https://blog.joinroot.com/mounting-react-native-components-with-enzyme-and-jsdom/

上写过它

如果您使用我们的分支,react-native-mock-render,并设置 jsdom,您将能够安装组件。