由于世博会缺少财产(React Native),Jest失败了

时间:2017-11-03 07:29:06

标签: javascript reactjs react-native jestjs expo

测试套件无法运行:

  

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)

任何人都有解决方案吗?

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文件的依赖项中删除jestjest-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自述文件是最好的地方之一,因为它更接近真相的来源。