当我尝试用jest测试我的react-native应用程序时,我得到了一个奇怪的导入错误 . 我已经安装了babel-jest,babel-preset-react-native,jest,jest-react-native和react-test-render,但是当我运行npm test时会收到此错误消息 .
●测试套件无法运行
/Users/maftalion/www/stars20/kiosk/node_modules/native-base/index.js:4
import Drawer from './Components/vendor/react-native-drawer';
^^^^^^
**SyntaxError: Unexpected token import**
at transformAndBuildScript (node_modules/jest-runtime/build/transform.js:316:10)
at Object.<anonymous> (src/routes/Identification.js:3:17)
at Object.<anonymous> (src/routes/router.js:4:21)
测试套房:1次失败,1次通过,2次测试:1次通过,1次快照:1次通过,1次总计时间:1.011s
4 回答
想出来,基本上抛出在transformIgnorePatterns中使用es6语法的任何节点模块 .
“transformIgnorePatterns”:[“node_modules /(?!react-native | native-base | react-clone-referenced-element)”],
尝试将transformIgnorePatterns添加到package.json:
对我来说,Jest开箱即用,但是:
我正在使用React Native v0.37.0 .
我发现之前给出的答案并没有解决测试本身的错误,如果它们是用ES6编写的(就像
ignite new MyProject
之后的Ignite CLI创建的样板测试一样) .我终于设法通过添加
package.json
中的test
任务来删除与ES6相关的错误:我正在使用RN
0.45.1
,Node7.10.1
(和8.1.2
),Yarn0.24.6
和Jest20.0.4
PS:不要总是在控制台中看到这个,但在VS Code
v1.13.1
设置--no-cache
有所不同 .您在webpack config中配置了Babel,这仅适用于webpack . 当其他工具(如Jest)使用Babel时,他们会看到webpack配置 . 您可以使用.babelrc文件来配置Babel,这将适用于运行Babel(不仅仅是webpack)的任何内容 .
用一个 . babelrc通常是首选,因为您希望拥有一般的babel配置,如果您需要覆盖设置,您仍然可以在特定应用程序中执行此操作,例如在webpack配置中 .
创建以下.babelrc:
有了它,您可以删除webpack配置中的presets选项,因为它将使用.babelrc . 请注意,[cacheDirectory选项] [3]特定于babel-loader,不用于配置底层Babel .
您的测试中也有拼写错误,toMatchSnapShot()应该是toMatchSnapshot() .