-
Notifications
You must be signed in to change notification settings - Fork 11.9k
Closed
Milestone
Description
Bug Report or Feature Request (mark with an x
)
- [x] bug report
- [ ] feature request
Area
- [x] devkit
- [ ] schematics
Versions
node v8.9.4
npm 5.6.0
macOS Sierra
Repro steps
ng new CoverageTest
cd CoverageTest
ng g component componentA
ng g component componentB
// add dumy public method to componentb.ts
/*
Additionally create some file and put there some simple class with one method. eg.
class ServiceA {
public getHello(): string {
return 'hello';
}
}
*/
// now generate code coverage
ng test --code-coverage --watch false
// open coverage/index.html
Description
Code coverage generates a report but its misleading:
- It doesn't include
ServiceA
coverage - Despite there are just two methods in
componentb
, coverage is eqal to 80%. If I preview covered area it covered untested file as well! - After editing
test.ts
(replace
const context = require.context('./', true, /\.spec\.ts$/);
with
const context = require.context('./', true, /\/app\/.*\.ts$/);
and reruningng test --code-coverage --watch false
ServiceA is visible in report but has some unrealistic values (Statement Coverage at 80%, Branches at 100%, Lines 83%)
Desired functionality
Ad 1. Coverage that does not include all files is misleading. How do I know which files are covered in unit tests?
Ad 2. How it happened that componentB is covered in 80% and newly created method is not covered in view? I suspect that mechanism that loads JS makes such faults positive scenario.
Ad 3. Why ServiceA shows as being covered despite there were no test for it?
All these 3 things look like a bug. Can you guys take a look at it?
barretodavid, johnpapa, pm-Egor-Genning, elvisfernandes, hoefling and 23 more