Testing React Native的测试平台特定扩展代码
当前,React Native Dynamics需要运行平台的文件扩展名为Testing React Native的测试平台特定扩展代码,testing,react-native,jestjs,Testing,React Native,Jestjs,当前,React Native Dynamics需要运行平台的文件扩展名为*.ios.js或*.android.js。但是,在测试环境中运行此代码时,我们会得到一个require错误,因为在文件树中找不到模块require('./module'),如下所示: module.ios.js module.android.js 我们如何在测试环境中处理这些问题?这有点难看,也许有更好的解决方案,但似乎您可以创建一个module.js文件,将在测试中使用,但在平台环境中,它仍将使用module.io
*.ios.js
或*.android.js
。但是,在测试环境中运行此代码时,我们会得到一个require
错误,因为在文件树中找不到模块require('./module')
,如下所示:
module.ios.js
module.android.js
我们如何在测试环境中处理这些问题?这有点难看,也许有更好的解决方案,但似乎您可以创建一个
module.js
文件,将在测试中使用,但在平台环境中,它仍将使用module.ios.js
或module.android.js
您需要创建一个自定义编译器,以解决测试中特定于平台的依赖项。如果您正在使用摩卡咖啡,这可能会帮助您:
从Jest 17.0.0开始,您可以使用
defaultPlatform
配置进行此操作-请参阅Jest React Native的最底层
如图所示,您可以进行如下配置:
"haste": {
"defaultPlatform": "ios",
"platforms": ["android", "ios"],
},
当然,这意味着您的测试只加载组件的iOS版本(或者只加载Android,取决于您选择如何配置它)
如果您发现测试这两个版本很重要,您可能需要做一些更像本期中提到的解决方案的事情,可能需要操作Platform.OS
并直接使用require.requireActual
(可能还想跟踪问题,以防最终找到一个不太老套的解决方案。)向
moduleFileExtensions添加特定于平台的扩展
修复了我在jest.14.1
中遇到的问题。归功于:
下面是samplepackage.json
中的一个片段,它将运行包括scene.jest.js(x)在内的所有文件
...
"jest": {
"verbose": true,
"preset": "jest-react-native",
"moduleFileExtensions": ["js", "android.js", "ios.js"],
"testRegex": "\\.scene\\.jest\\.jsx$"
}
...