从测试文件中找不到模块@ ionic / angular(ionic 4)

爆炸药

我正在尝试使用玩笑来测试Ionic应用程序。我开玩笑的配置是:

preset: 'jest-preset-angular',
setupTestFrameworkScriptFile: '<rootDir>/src/setupJest.ts',
transformIgnorePatterns: ['node_modules/(?!@ngrx|@ionic-native|@ionic)'],
globals: {
  __TRANSFORM_HTML__: true,
},

setupJest.js文件具有import 'jest-preset-angular';

我有一个非常简单的测试,其中使用TestBed创建App组件的实例并检查其是否正确。在这段代码中,我有import { Platform } from '@ionic/angular';

开玩笑的错误:

Cannot find module '@ionic/angular' from 'app.component.test.ts'

如果仅从import { Platform } from '@ionic/angular'测试文件中删除,Jest会从组件文件中给我同样的错误:

Cannot find module '@ionic/angular' from 'app.component.ts'

使用ionic serve/构建工程,开玩笑只是给我这个错误,它无法从Y导入X。

如何获得从@ionic文件导入的笑话

爆炸药

我能够通过链接的GitHub问题中的信息解决此问题。我到达了链接到这里的最终配置:https : //github.com/ionic-team/ionic/issues/15695#issuecomment-428412641

从那以后,我修改了这些配置以加快测试速度(使用缓存),但仍然没有遇到问题。我当前的配置:

// jest.config.js
module.exports = {
  globals: {
    // jest-preset-angular sets ts-jest tsConfigFile as "src/tsconfig.spec.json". This overwrites
    // it to use the default `tsconfig.json`. You can change this to your preferred config.
    __TRANSFORM_HTML__: true,
  },
  preset: 'jest-preset-angular',
  setupTestFrameworkScriptFile: '<rootDir>/src/setupJest.ts',
  moduleNameMapper: {
    '^@ionic/core/loader': '<rootDir>/node_modules/@ionic/core/dist/esm/es5/ionic.define.js',
  },
  transformIgnorePatterns: [
    '<rootDir>/node_modules/(?!@ionic)',
  ],
};

src/setupJest.ts仅包含import 'jest-preset-angular'

TypeScript配置:

{
  "compilerOptions": {
    "allowJs": true,
    "target": "esnext",
    "module": "commonjs",
    "moduleResolution": "node",
    "declaration": false,
    "noUnusedLocals": true,
    "noUnusedParameters": true,
    "forceConsistentCasingInFileNames": true,
    "noEmit": true,
    "skipLibCheck": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "lib": ["es6", "dom"]
  }
}

您可能会稍微改变一些配置设置,但是最重要的是allowJs这是必需的,否则jest将无法正确导入许多Ionic库。

最后,请记住从/ngxIonic 4文件导入例如:

import { StatusBar } from '@ionic-native/status-bar/ngx';

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Ionic 3 Angular 4找不到模块`jsonwebtoken`

版本升级到Ionic 4时找不到模块“ ionic-angular” .ts

错误:在Ionic 4中找不到模块“符号可观察”

错误:在Ionic Angular中找不到模块“ rxjs / operators”

错误 TS2307:在 ionic 4 中找不到模块“@ionic-native/date-picker/ngx”

在Cordova&Ionic 4中找不到'FBSDKCoreKit / FBSDKCoreKit.h'文件

Angular 4-'.ts'文件中文本的ionic 3翻译

Ionic 2 Angular 4中存在错误条件的后备图像

Ionic 4 / Angular 6:标签中的嵌套子路线

在Ionic 3和Angular 4中显示多个请求的加载

无法在 html 中以 angular 4 ionic 3 显示数组对象

在Angular CLI项目结构中创建ionic 4应用

如何使用angular js在Ionic 4中显示图像

如何在Ionic 4 / Angular中禁用页面过渡动画?

如何使用 angular 将 css 赋予 ionic 4 中的元素?

Ionic firestore 找不到模块“@angular/fire/firestore”

Ionic Angular 中的 HttpErrorResponse

找不到Ionic4 Angular7 ngx-translate管道

Ionic 4中2个模块的声明

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

在Ionic 4中更改CSS

Ionic 4中的CSS变量

错误:使用StencilJS克隆Ionic 4组件时出现“找不到模块”

Ionic中的动态环境变量-找不到模块

在Ionic 4中使用.js文件

Ionic 2找不到模块'dgram'

找不到模块“ ionic-native”

Angular 4 & Ionic 3:由于 http.get() 调用的异步特性,无法从 JSON 文件填充 Ionic 菜单

Ionic 3 Angular 4上的意外令牌)