Karma Jasmine:导入间谍没有暗示任何



如果我在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';`

我试过这个:

  1. npm install --save-dev @types/karma-jasmine

  2. "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.

如果设置了"noImplicitAny": true,如何导入Spy

如果将其设置为false(,这是默认值(,则导入和使用不会出错。

示例用法:

const testSpy: Spy = spyOn(testService, "test").and.callThrough();

这是因为框架的名称是Jasmine。Karma是不应该在规范中提及的测试运行程序,karma-jasmine是无缝运行Jasmine规范的Karma插件。

由于jasmine是一个名称空间,它应该是:

import * as jasmine from "jasmine";
const spy: jasmine.Spy = ...;

假定jasmine是全局的,并且jasmine.Spy可以在没有import的情况下直接使用。

相关内容

最新更新