如果我在Angular 4+项目的tsconfig.json
文件中设置它:
"noImplicitAny": true,
...并导入它以用于单元测试:
import { Spy } from "karma-jasmine";
...我在npm test
上看到此控制台错误:
ERROR in C:/test-project/src/app/components/test/test.component.spec.ts (1,21):
Could not find a declaration file for module 'karma-jasmine'.
'C:/test-project/node_modules/karma-jasmine/lib/index.js' implicitly has an 'any' type.
Try `npm install @types/karma-jasmine` if it exists or add a new declaration (.d.ts) file containing `declare module 'karma-jasmine';`
我试过了:
npm install --save-dev @types/karma-jasmine
将"types": [ "karma-jasmine" ]
添加到tsconfig.json
...现在我在npm test
看到此控制台错误:
ERROR in C:/test-project/src/app/components/test/test.component.spec.ts (1,21):
File 'C:/test-project/node_modules/@types/karma-jasmine/index.d.ts' is not a module.
如果设置Spy
,如何导入"noImplicitAny": true
如果设置为false
(是默认值),则导入和使用可以正常运行。
使用示例:
const testSpy: Spy = spyOn(testService, "test").and.callThrough();
答案 0 :(得分:2)
那是因为框架的名称是Jasmine。 Karma是测试运行器,不应该在规范中提及,karma-jasmine
是Karma插件,可以无缝运行Jasmine规范。
由于jasmine
为a namespace,因此应为:
import * as jasmine from "jasmine";
const spy: jasmine.Spy = ...;
jasmine
应该是全球性的,jasmine.Spy
可以在没有import
的情况下直接使用。