使用Jest测试Expo Constant,Jest遇到意外令牌

时间:2019-05-20 23:14:39

标签: react-native jestjs babel expo

我将SDK从Expo管理的工作流程切换到Expo裸工作流程,以减少Expo包含的一些不必要的库。我目前正在使用Expo中的某些库,例如Secure-store,Constants和Web浏览器,而不是使用整个Expo包。我最初在jest,jest-expo和Expo中运行过一些测试。我从jest中删除了expo,并尝试仅使用上述三个expo库以及@unimodules来编译jest。测试文件具有导入语句,例如:

import * as SecureStore from 'expo-secure-store';
import * as WebBrowser from 'expo-web-browser';
import Constants from 'expo-constants';

但是,在开玩笑时,它一直在给我

  

Jest遇到意外令牌   这通常意味着您正在尝试导入Jest无法解析的文件,例如这不是普通的JavaScript。 > SyntaxError:意外的令牌导入在   从'expo-constants'导入常量; > ScriptTransformer._transformAndBuildScript(node_modules/@jest/transform/build/ScriptTransformer.js:471:17)

自从我以前遇到该错误以来,好像我可能已经解决了expo-secure-store的意外导入问题。我从Babel6切换到babel7,添加了一个如下所示的babel.config.js:

module.exports = {
    presets: [
      '@babel/preset-env'
    ],
    env: {
        test: {
          presets: [['@babel/preset-env']]
        }
      },
    plugins: [
        "@babel/plugin-proposal-class-properties",
        "@babel/plugin-transform-modules-commonjs"
    ]
};

然后我从玩笑预设:jest-expo切换到玩笑预设:react-native。

我在工作流程中做错什么了吗?任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

有点晚了,但是我遇到了这个问题,我修复了添加问题

"transformIgnorePatterns": [
    "node_modules/(?!(jest-)?react-native|react-clone-referenced-element|@react-native-community|expo(nent)?|@expo(nent)?/.*|react-navigation|@react-navigation/.*|@unimodules/.*|unimodules|sentry-expo|native-base|@sentry/.*)"
  ]

遵循指南