我正在尝试使用玩笑来测试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库。
最后,请记住从/ngx
Ionic 4文件导入。例如:
import { StatusBar } from '@ionic-native/status-bar/ngx';
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句