Jest / Ionic 4 beta-从“ @ ionic / angular”导入{Platform};获取SyntaxError:在Jest测试中,不是Ionic测试中,意外的令牌导出

Ste*_*ott 5 jestjs ionic-native angular ionic4

针对基本软件包运行Jest时,在运行测试时出现Jest错误,仅在运行时不会出现ionic serve。笑话上出现错误

import { Platform } from '@ionic/angular';
Run Code Online (Sandbox Code Playgroud)

这是:

export { IonicModule } from './ionic-module';
^^^^^^

SyntaxError: Unexpected token export

  3 | import { RouterTestingModule } from '@angular/router/testing';
  4 |
> 5 | import { Platform } from '@ionic/angular';
    | ^
  6 | import { SplashScreen } from '@ionic-native/splash-screen/ngx';
  7 | import { StatusBar } from '@ionic-native/status-bar/ngx';
  8 |

  at ScriptTransformer._transformAndBuildScript (node_modules/jest-runtime/build/script_transformer.js:403:17)
  at Object.<anonymous> (src/app/app.component.spec.ts:5:1)
Run Code Online (Sandbox Code Playgroud)

我的Jest.config.json

module.exports = {
    collectCoverage: true,
    collectCoverageFrom: [
        "src/**/*.ts"
    ],
    coverageDirectory: "<rootDir>/coverage/",
    moduleNameMapper: {
        "@core/(.*)": "<rootDir>/src/app/core/$1",
        "@state/(.*)": "<rootDir>/src/app/state/$1"
    },
    preset: "jest-preset-angular",
    roots: ['src'],
    setupTestFrameworkScriptFile: "<rootDir>/src/setup-jest.ts",
    transformIgnorePatterns: [
        "node_modules/(?!(@ionic-native|@ionic|angularfire2)/)"
    ],
    verbose: false  
}
Run Code Online (Sandbox Code Playgroud)

我只是使用示例侧菜单模板并调整组件以运行Jest。

Bie*_*lik 4

看到所有答案都很长,我决定在阅读Jest 单元测试不再适用于 Ionic 4后展示对我有用的内容。

为了使其工作,您需要添加jest.config.ts

transformIgnorePatterns: [
  "node_modules/(?!@ionic-native|@ionic)"
],
Run Code Online (Sandbox Code Playgroud)

并在tsconfig.spec.json集合中:

"compilerOptions": {
  "allowJs": true,
},
Run Code Online (Sandbox Code Playgroud)