运行 ng 测试时缺少声明文件
Declaration file missing when running ng test
我最近开始处理一个现有的 Angular 项目单元测试已经中断很长时间了。不幸的是,由于对声明文件中定义的对象的引用错误,我无法获得它们 运行。此声明文件位于项目的根目录中。在运行时,实际的库从我们的开发服务器加载,一切正常。
然而,当 运行 ng test
时,Jasmine 抱怨找不到引用:
ReferenceError: SomeObject is not defined
at <Jasmine>
at MyService.getDetails (http://localhost:9876/_karma_webpack_/src/app/MyService.service.ts:196:33)
这是 运行 应用程序的 tsconfig,运行 很好:
{
"extends": "../tsconfig.base.json",
"compilerOptions": {
"outDir": "../out-tsc/app",
"baseUrl": "./",
"experimentalDecorators": true,
"types": []
},
"files": [
"main.ts",
"polyfills.ts",
"someobject.d.ts"
],
"include": [
"src/**/*.d.ts"
]
}
测试配置类似,但是报上面的错误:
{
"extends": "../tsconfig.base.json",
"compilerOptions": {
"outDir": "../out-tsc/spec",
"baseUrl": "./",
"types": [
"jasmine",
"node"
]
},
"files": [
"someobject.d.ts",
"polyfills.ts",
"test.ts"
],
"include": [
"**/*.spec.ts",
"**/*.d.ts"
]
}
someobject.d.ts文件位于项目的根目录下,与polyfills.ts和main.ts处于同一级别。
这只是我开发的第二个 Angular 应用程序,所以我在这方面经验不足。 TypeScript声明文件也是第一次遇到。我在网上找到的大多数资源都是关于处理通过 npm 为 lodash 等库分发的声明文件。我发现很少 none 信息可以像这样在项目中使用声明文件。
我正在寻找从这里开始的正确方向的一些指示。
显然,我编辑了 class 和文件名,因为我无权逐字共享源代码。
在尝试了几件事之后,我通过添加实际库并将其包含在 angular.json:
中仅用于测试来解决
"test": {
"builder": "@angular-devkit/build-angular:karma",
"options": {
...
"scripts": [
"someobject.js"
],
....
}
}
这样,脚本在测试时可用,但不包含在由外部服务提供的生产中。
我最近开始处理一个现有的 Angular 项目单元测试已经中断很长时间了。不幸的是,由于对声明文件中定义的对象的引用错误,我无法获得它们 运行。此声明文件位于项目的根目录中。在运行时,实际的库从我们的开发服务器加载,一切正常。
然而,当 运行 ng test
时,Jasmine 抱怨找不到引用:
ReferenceError: SomeObject is not defined
at <Jasmine>
at MyService.getDetails (http://localhost:9876/_karma_webpack_/src/app/MyService.service.ts:196:33)
这是 运行 应用程序的 tsconfig,运行 很好:
{
"extends": "../tsconfig.base.json",
"compilerOptions": {
"outDir": "../out-tsc/app",
"baseUrl": "./",
"experimentalDecorators": true,
"types": []
},
"files": [
"main.ts",
"polyfills.ts",
"someobject.d.ts"
],
"include": [
"src/**/*.d.ts"
]
}
测试配置类似,但是报上面的错误:
{
"extends": "../tsconfig.base.json",
"compilerOptions": {
"outDir": "../out-tsc/spec",
"baseUrl": "./",
"types": [
"jasmine",
"node"
]
},
"files": [
"someobject.d.ts",
"polyfills.ts",
"test.ts"
],
"include": [
"**/*.spec.ts",
"**/*.d.ts"
]
}
someobject.d.ts文件位于项目的根目录下,与polyfills.ts和main.ts处于同一级别。
这只是我开发的第二个 Angular 应用程序,所以我在这方面经验不足。 TypeScript声明文件也是第一次遇到。我在网上找到的大多数资源都是关于处理通过 npm 为 lodash 等库分发的声明文件。我发现很少 none 信息可以像这样在项目中使用声明文件。
我正在寻找从这里开始的正确方向的一些指示。
显然,我编辑了 class 和文件名,因为我无权逐字共享源代码。
在尝试了几件事之后,我通过添加实际库并将其包含在 angular.json:
中仅用于测试来解决"test": {
"builder": "@angular-devkit/build-angular:karma",
"options": {
...
"scripts": [
"someobject.js"
],
....
}
}
这样,脚本在测试时可用,但不包含在由外部服务提供的生产中。