Мне удалось решить эту проблему из информации в связанной проблеме 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';