Обновление jest-preset-angular выдает ошибки об отсутствии файла zone-testing.js
Для ясности, у меня уже есть более старая версия
jest-preset-angular
работаю с Jest, но у меня есть 3 основные версии, и я бы очень хотел обновить (тем более, что есть некоторые предупреждения безопасности для некоторых базовых пакетов). Поэтому я пытаюсь обновить его до последней версии (
9.0.1
), но у меня много проблем с его работой. Я перепробовал множество конфигураций, и ниже приведены некоторые из последних конфигураций, которые я пробовал.
Для справки, я также создал Толкай запрос здесь на моей библиотеке Open Source , который использует шутя и угловой.
Основная ошибка, которую я имею, заключается в следующем (и поиск в Интернете совершенно не помогает). Ошибка появляется только в тестах, использующих
TestBed
,
waitForAsync
и другие ... через
import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
Ошибка в консоли
zone-testing.js is needed for the fakeAsync() test helper but could not be found.
Please make sure that your environment includes zone.js/testing
at resetFakeAsyncZone (../packages/core/testing/src/fake_async.ts:25:9)
at Object.<anonymous> (../packages/core/testing/src/before_each.ts:26:5)
at TestScheduler.scheduleTests (node_modules/@jest/core/build/TestScheduler.js:333:13)
at runJest (node_modules/@jest/core/build/runJest.js:387:19)
at _run10000 (node_modules/@jest/core/build/cli/index.js:408:7)
at runCLI (node_modules/@jest/core/build/cli/index.js:261:3)
(ПЕРЕД)
module.exports = {
rootDir: '../',
globals: {
'ts-jest': {
tsConfigFile: '<rootDir>/src/tsconfig.spec.json',
},
__TRANSFORM_HTML__: true,
},
transform: {
'^.+\\.(ts|html)$': '<rootDir>/node_modules/jest-preset-angular/preprocessor.js',
},
...
};
jest.config.js
(ПОСЛЕ)
module.exports = {
rootDir: '../',
globals: {
'ts-jest': {
allowSyntheticDefaultImports: true,
diagnostics: false,
isolatedModules: true,
tsconfig: '<rootDir>/tsconfig.spec.json',
stringifyContentPathRegex: '\\.html$',
astTransformers: [
'jest-preset-angular/InlineHtmlStripStylesTransformer'
]
},
},
preset: 'jest-preset-angular',
transform: {
'^.+\\.(ts|html)$': 'ts-jest',
},
...
};
src/tsconfig.spec.json
{
"extends": "./tsconfig.json",
"compilerOptions": {
"allowJs": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"outDir": "./out-tsc/spec",
"module": "commonjs",
"types": [
"jest",
"jest-extended",
"jquery",
"node"
]
},
"files": [
"src/polyfills.ts"
],
"include": [
"src/**/*.spec.ts",
"src/**/*.d.ts"
]
}
jest-pretests.ts
import jQuery from 'jquery';
(global as any).$ = (global as any).jQuery = jQuery;
(window as any).$ = (window as any).jQuery = jQuery;
(global as any).navigator = { userAgent: 'node.js' };
(global as any).Slick = (window as any).Slick = {};
import 'jquery-ui-dist/jquery-ui';
import 'slickgrid/lib/jquery.event.drag-2.3.0';
import 'slickgrid/slick.core';
import 'slickgrid/slick.dataview';
import 'slickgrid/slick.grid';