随着最近React Native v0.25.0和0.26.0的更改将React和React Native分开,我开始遇到一个问题,我的单元测试使用Mocha将不再运行,因为我的测试初始化失败脚本尝试从ES6编译React Native源。我的单元测试以前使用babel-register
组合并忽略/包含node_modules/
的某些部分(请参阅my basic test init script setup)。
具体而言,解析Error: Cannot find module 'ReactNative'
时,init脚本失败并显示node_modules/react-native/Libraries/react-native/react-native.js
。检查文件时,确定在那里找到require('ReactNative')
行; result of the commit to fully separate out React/RN。我可以理解为什么Node和babel-register在这里死亡 - require
不遵循常规约定,但似乎是FB项目的FB节点急速系统的一部分。 This SO Q&A有助于更多地了解它,但看起来我没有任何办法让我的Mocha测试运行,因为我不能涉及节点 - 在准备进行测试的巴别塔翻译中匆匆忙忙。
当它与RN v0.26.0兼容时,我会尝试react-native-mock
,但如果没有它可以运行我的单元测试会很好,因为我没有&#39之前需要它。我错过了我的Mocha堆栈中的某些东西,这会使这个神奇地工作吗?我对React Native堆栈的理解是什么,它可以帮助我解决这个问题,还可以对我的各个部分进行单元测试?
(注意:我主要测试API元素,动作创建者/减少者和各种实用工具方法,不检查React组件的渲染输出。)