#jestjs #ionic5 #ts-jest #angular11
Вопрос:
Привет, я использую angular 11 и ionic 5 ;
для ионного хранилища я использую модуль @ionic/storage-angular:^3.0.6.
во время шутливых модульных тестов я получаю
Не удается найти модуль «@ionic/хранилище » из «node_modules/@ionic/storage-angular/bundles/ionic-storage-angular.umd.js’
@ionic/storage-angular-это зависимость в одном из сервисов, над которым я издевался
jest.confi.js имеет
transformIgnorePatterns: [
'./node_modules/(?!@ionic|ngx-socket-io/|!@ionic/storage-angular)'
]
файл спецификации, издевающийся над сервисом
let storeServiceStub={
get:jest.fn().mockResolvedValue({})
};
await TestBed.configureTestingModule({
declarations: [ DataSyncComponent ],
providers:[
{ provide: StoreService, useValue: storeServiceStub },
]
})
.compileComponents();
@ionic/хранение-угловой-это служба хранения, которую я заменяю заглушкой;
тестирование env для репо пакета ошибок.json
dependencies:{
...
"@ionic/storage-angular": "^3.0.6",
...
}
devDependencies:{
...
"jest": "^27.0.3",
"jest-preset-angular": "^9.0.1",
"@types/jest": "^26.0.23",
...
}
узел v 14
ос osx 11.2.2
Ответ №1:
Я могу исправить это, добавив следующую конфигурацию в свой jest.config.js
moduleNameMapper: {
'^@ionic/storage': '<rootDir>/node_modules/@ionic/storage/dist/esm/index.d.ts',
},
Очень похоже на ответ от @Ferraria. Но имя модуля начинается с символа^, а путь заканчивается индексом.d.ts.
Моя полная конфигурация такова
module.exports = {
"preset": "jest-preset-angular",
"setupFilesAfterEnv": ["<rootDir>/setup-jest.ts"],
"transformIgnorePatterns": [
"node_modules/(?!@ngrx|@ionic-native|@ionic)"
],
moduleNameMapper: {
'^@ionic/storage': '<rootDir>/node_modules/@ionic/storage/dist/esm/index.d.ts',
},
setupFiles: ["jest-canvas-mock"]
};
Ответ №2:
Предоставьте jest moduleNameMapper для @ionic/хранения в вашем jest.config.js вот так:
...,
transformIgnorePatterns: [
'./node_modules/(?!@ionic|ngx-socket-io/|!@ionic/storage-angular)'
],
"moduleNameMapper": {
"@ionic/storage": "<rootDir>/node_modules/@ionic/storage/dist/esm"
}
Вы можете найти дополнительную информацию для moduleNameMapper здесь.
Комментарии:
1. я попробовал это, я получаю «Синтаксическую ошибку: невозможно использовать оператор импорта вне модуля для локального сервера, который зависит от @ionic/storage-angular».