【发布时间】:2022-08-09 23:58:53
【问题描述】:
运行 Jest 测试文件时出现错误:
TypeError: Class constructor EventEmitter_ cannot be invoked without \'new\'
at new ZoneAwareEventEmitter (node_modules/@progress/kendo-angular-grid/dist/npm/common/event-emitter.js:16:28)
at new GridComponent (node_modules/@progress/kendo-angular-grid/dist/npm/grid.component.js:328:1)
我尝试了目标(es5、es6、es2019 ...)和模块(commonJs、es6、es2015、es2020 ....)的所有可能性
\"编译器选项\": { \"outDir\": \"./out-tsc/spec\", \"目标\": \"es2019\", \"模块\": \"es2020\", \"moduleResolution\": \"节点\", },
包.json
{
\"name\": \"jest-angular\",
\"version\": \"0.0.0\",
\"scripts\": {
\"ng\": \"ng\",
\"start\": \"ng serve\",
\"build\": \"ng build\",
\"watch\": \"ng build --watch --configuration development\",
\"test\": \"jest\",
\"test-esm\": \"node --experimental-vm-modules --no-warnings node_modules/jest/bin/jest.js -c=jest-esm.config.mjs --no-cache\",
\"test:w\": \"jest --watchAll\",
\"cover\": \"jest --coverage\"
},
\"private\": true,
\"dependencies\": {
\"core-js\": \"^3.21.1\",
\"@angular/animations\": \"^13.3.0\",
\"@angular/cdk\": \"^13.3.0\",
\"@angular/common\": \"^13.3.0\",
\"@angular/compiler\": \"^13.3.0\",
\"@angular/core\": \"^13.3.0\",
\"@angular/forms\": \"^13.3.0\",
\"@angular/localize\": \"^13.3.0\",
\"@angular/platform-browser\": \"^13.3.0\",
\"@angular/platform-browser-dynamic\": \"^13.3.0\",
\"@angular/router\": \"^13.3.0\",
\"web-animations-js\": \"2.3.2\",
\"@progress/kendo-angular-l10n\": \"3.0.4\",
\"@progress/kendo-licensing\": \"1.2.2\",
\"@progress/kendo-angular-popup\": \"4.0.5\",
\"@progress/kendo-angular-buttons\": \"7.0.4\",
\"@progress/kendo-angular-intl\": \"3.1.3\",
\"@progress/kendo-drawing\": \"1.16.3\",
\"@progress/kendo-angular-dateinputs\": \"6.0.3\",
\"@progress/kendo-angular-inputs\": \"8.0.8\",
\"@progress/kendo-angular-dropdowns\": \"6.0.2\",
\"@progress/kendo-angular-treeview\": \"6.0.2\",
\"@progress/kendo-angular-label\": \"3.1.3\",
\"@progress/kendo-data-query\": \"1.5.6\",
\"@progress/kendo-angular-pdf-export\": \"3.0.4\",
\"@progress/kendo-angular-excel-export\": \"4.0.4\",
\"@progress/kendo-angular-grid\": \"6.1.1\",
\"rxjs\": \"~7.5.5\",
\"tslib\": \"^2.3.1\",
\"zone.js\": \"~0.11.5\"
},
\"devDependencies\": {
\"@angular-devkit/build-angular\": \"^13.3.0\",
\"@angular/cli\": \"^13.3.0\",
\"@angular/compiler-cli\": \"^13.3.0\",
\"@types/jest\": \"^27.0.3\",
\"@types/node\": \"^12.11.1\",
\"jest\": \"^27.5.1\",
\"jest-preset-angular\": \"^11.1.1\",
\"typescript\": \"~4.5.2\"
}
}
jest.config.js
module.exports = {
verbose: true,
testPathIgnorePatterns: [
\"<rootDir>/node_modules/\",
],
preset: \"jest-preset-angular\",
setupFilesAfterEnv: [\"<rootDir>/setup-jest.ts\"],
};
设置-jest.ts
import \'@angular/localize/init\';
import \'jest-preset-angular/setup-jest\';
app.component.html
<kendo-grid></kendo-grid>
app.component.spec.ts
import { ComponentFixture, TestBed } from \'@angular/core/testing\';
import { AppComponent } from \'./app.component\';
import { AppModule } from \'./app.module\';
let fixture: ComponentFixture<AppComponent>;
let app: AppComponent;
beforeEach(() => {
TestBed.configureTestingModule({
imports: [AppModule],
providers: [],
declarations: [AppComponent],
}).compileComponents();
fixture = TestBed.createComponent(AppComponent);
app = fixture.componentInstance;
});
describe(\'class AppComponent{}\', () => {
it(\'Should create the app\', () => {
expect(app).toBeTruthy();
});
});
-
请提供足够的代码,以便其他人可以更好地理解或重现该问题。
-
Telerik 知道所描述的问题,因为 Jest 预设在没有 Ivy 包的情况下无法与 Angular v13 一起使用。团队目前正在切换到预计于 2022 年 5 月 R2 发布的 Ivy 库格式。进展可以在 GitHub 存储库中的以下线程中跟踪:github.com/telerik/kendo-angular/issues/3502 切换到 Ivy 引擎后,问题将得到解决。
-
@MStephan我目前有完全相同的问题,不幸的是,将Grid更新到v7(应该是Ivy-ready,对吧?)并没有改变任何事情。它对任何人都有效吗?
-
我在 Github 上开了一张票:github.com/telerik/kendo-angular/issues/3660
-
我的票上有来自 Telerik 的相同答案。非常失望。
标签: jestjs angular13 kendo-angular-ui