首页 > 解决方案 > 测试无法使用 Jest 和 React Native 运行

问题描述

在尝试运行测试时,将 React Native 与 Jest 和 TypeScript 一起使用,我得到:

Test suite failed to run

    [BABEL] unknown: Preset /* your preset */ requires a filename to be set when babel is called directly,
    babel.transform(code, { filename: 'file.ts', presets: [/* your preset */] });
    See https://babeljs.io/docs/en/options#filename for more information.

知道什么会导致这种情况吗?

这是我的jest部分package.json

"jest": {
    "preset": "react-native",
    "roots": [
      "<rootDir>/__tests__"
    ],
    "setupFiles": [
      "<rootDir>/scripts/jest/setup.js",
      "<rootDir>/node_modules/appcenter/test/AppCenterMock.js",
      "<rootDir>/node_modules/appcenter-analytics/test/AppCenterAnalyticsMock.js",
      "<rootDir>/node_modules/appcenter-crashes/test/AppCenterCrashesMock.js",
      "<rootDir>/node_modules/appcenter-push/test/AppCenterPushMock.js",
      "<rootDir>/node_modules/react-native-localization.js",
      "./config/jest/mock.fetch.js",
      "./config/jest/react-native-localization.js"
    ],
    "moduleFileExtensions": [
      "ts",
      "tsx",
      "js"
    ],
    "transform": {
      "^.+\\.(js)$": "<rootDir>/node_modules/babel-jest",
      "\\.(ts|tsx)$": "<rootDir>/node_modules/ts-jest/preprocessor.js"
    },
    "collectCoverage": true,
    "coverageDirectory": "coverage",
    "coverageReporters": [
      "text-summary",
      "html"
    ],
    "testPathIgnorePatterns": [
      "\\.snap$",
      "<rootDir>/node_modules/",
      "<rootDir>/lib/"
    ],
    "collectCoverageFrom": [
      "**/*.{js,jsx}",
      "artifacts/**/*.js",
      "!artifacts/**/*.spec.js",
      "!artifacts/**/*.index.js",
      "!<rootDir>/node_modules/"
    ]
  },

这是我的babel.config.js文件:

module.exports = {
  presets: [
    'module:metro-react-native-babel-preset'
  ],
  plugins: [
    'babel-plugin-transform-typescript-metadata',
    ['@babel/plugin-proposal-decorators', { legacy: true }]
  ],
};

标签: typescriptreact-nativejestjs

解决方案


推荐阅读