测试套件无法运行:
TypeError:无法读取undefined的属性'linkingUri' 在对象。 (Object_modules / expo / src / Constants.js:18:29)。 (Object_modules / expo / src / Logs.js:94:228)。 (node_modules /博览会/ SRC / Expo.js:3:1)
任何人都有解决方案吗?
答案 0 :(得分:0)
Expo SDK(以及带有本机代码的React Native软件包)从ReactNative.NativeModules
读取字段。在这种情况下,Expo SDK中的Constants.js尝试从ReactNative.NativeModules.ExponentConstants.linkingUri
读取,但由于该链中的一个对象未定义 - 毕竟,您在Node中运行此代码并且不是在世博会 - 你得到的是TypeError。
有一个名为jest-expo
的软件包可以模拟ReactNative.NativeModules.ExponentConstants
以及更多Jest测试。
要使用jest-expo
(从版本22.x开始),请首先从package.json文件的依赖项中删除jest
或jest-cli
,因为jest-expo
将会为您导入正确版本的Jest。例如:
yarn remove jest
接下来,在项目中安装jest-expo
:
yarn add --dev jest-expo
注意:如果您使用的是旧版本的Expo SDK,请务必使用相应版本的jest-expo
。例如,您无法使用{SDK} 21的jest-expo
项目为SDK 22构建项目。
最后,将其添加到package.json:
"scripts": {
"test": "node_modules/.bin/jest"
},
"jest": {
"preset": "jest-expo"
}
使用yarn test
运行测试。
这些具体说明可能会随着时间而改变,但它们传达了如何使用jest-expo
的要点。该项目的GitHub自述文件是最好的地方之一,因为它更接近真相的来源。