我正在使用 jest 框架对我的 Angular 应用程序进行单元测试。我在使用 zone.js 的 test.ts 文件中遇到问题。
我正在获取错误堆栈跟踪
TypeError: Cannot read property 'prototype' of undefined
3 | import { getTestBed } from '@angular/core/testing';
4 | import 'zone.js/dist/zone-testing';
> 5 | import {
| ^
6 | BrowserDynamicTestingModule,
7 | platformBrowserDynamicTesting
8 | } from '@angular/platform-browser-dynamic/testing';
at __extends (node_modules/zone.js/dist/zone-testing.js:394:73)
at node_modules/zone.js/dist/zone-testing.js:530:9
at node_modules/zone.js/dist/zone-testing.js:619:7
at node_modules/zone.js/dist/zone-testing.js:620:3
at Object.<anonymous>.NEWLINE (node_modules/zone.js/dist/zone-testing.js:9:65)
at Object.<anonymous> (node_modules/zone.js/dist/zone-testing.js:12:2)
at Object.<anonymous> (src/test.ts:5:1
我正在寻找一种方法,以最少的代码更改来解决此问题。
我已经尝试适应以下给出的解决方案
https://github.com/AlexanderZaytsev/react-native-i18n/issues/233
和
Jest: TypeError: Cannot read property of undefined,没有任何运气。
我也尝试过这些文档,但未指定与此相关的任何内容,或者我错过了。
这是我的 test.ts 文件。
import { getTestBed } from '@angular/core/testing';
import 'zone.js/dist/zone-testing';
import {
BrowserDynamicTestingModule,
platformBrowserDynamicTesting
} from '@angular/platform-browser-dynamic/testing';
declare const require: any;
// First, initialize the Angular testing environment.
getTestBed().initTestEnvironment(
BrowserDynamicTestingModule,
platformBrowserDynamicTesting()
);
// Then we find all the tests.
const context = require.context('./', true, /\.spec\.ts$/);
// And load the modules.
context.keys().map(context);
我使用了 compilerOptions
,
"esModuleInterop": true,
"module": "es2015",
正如我所说,我正在寻找一种方法以最小的代码更改来解决此问题。任何帮助表示赞赏。
答案 0 :(得分:1)
如果您已经完全迁移到Jest,则可以删除test.ts,因为不再使用Jasmine和Karma不再需要它。您可以阅读here。
如果出于某种原因需要保留它,则可以忽略Jest配置中的test.ts文件,因为默认情况下,jest将测试所有以spec.ts / js和test.ts / js结尾的文件。
**Default configuration:**
testMatch: [ "**/__tests__/**/*.[jt]s?(x)", "**/?(*.)+(spec|test).[jt]s?(x)" ]
**Change to:**
testMatch: [ "**/__tests__/**/*.[jt]s?(x)", "**/?(*.spec).[jt]s?(x)" ]
您可以阅读有关配置Jest here
的更多信息。