使用Jest测试Expo常量时,遇到了意外的令牌。

5

我正在将一个SDK从Expo托管工作流切换到Expo裸机工作流,以减少Expo中包含的一些不必要的库。我目前正在使用一些来自Expo的库,例如Secure-store、Constants和Web browser,而不是使用整个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遇到了一个意外的标记 这通常意味着您正在尝试导入Jest无法解析的文件,例如不是纯JavaScript。 >SyntaxError: 在“import Constants from '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-preset: jest-expo切换到jest-preset:react-native。

这个流程有什么问题吗?感谢任何帮助。

1个回答

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/.*)"
  ]

按照https://docs.expo.io/guides/testing-with-jest/的指南进行测试。


这段代码的哪一部分是修复的?指南来自哪里? - conor909
已添加缺失的链接到Expo指南。这里也有解释: https://jestjs.io/docs/tutorial-react-native#transformignorepatterns-customization - Santiago

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接