我正在用玩笑(使用jest-preset-angular
)测试一个角度项目。
收集覆盖率时,我得到一个未覆盖的分支,我不明白为什么。我可以用 3 个文件重现问题。
some-dependency.ts
export class SomeDependency {}
some-service.ts
import { Injectable } from '@angular/core';
import { SomeDependency } from './some-dependency';
@Injectable()
export class SomeService {
constructor(private dependency: SomeDependency) {
console.log('service created');
}
}
some-service.spec
import { SomeService } from './some-service';
describe('DerivedClass', () => {
it('should create', () => {
expect(new SomeService(null)).toBeTruthy();
});
});
通过运行yarn jest --coverage some-service
,我得到以下报道:
--------------------|----------|----------|----------|----------|-------------------|
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s |
--------------------|----------|----------|----------|----------|-------------------|
All files | 100 | 75 | 100 | 100 | |
some-dependency.ts | 100 | 100 | 100 | 100 | |
some-service.ts | 100 | 75 | 100 | 100 | 6 |
--------------------|----------|----------|----------|----------|-------------------|
在 HTML 报告中,我得到的关于未发现内容的信息太少。
我注意到移除@Injectable
装饰器会使覆盖率恢复到 100%
有人有解释吗?有没有办法在保留@Injectable
装饰师的同时获得 100% 的覆盖率?
编辑:我添加了一个 console.log 来证明构造函数被正确调用。黄色突出显示由 Istambul 报告提供,有助于查看未覆盖的分支。但是我这里没有分支,因为没有条件。