Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

Using overrideComponent breaks code coverage when testing with aot: true

Offen
#30,127 9 Kommentare 12 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Anfängerfreundlichkeit
48/100
Issue-Typ
Bug
Klarheit
Größtenteils klar
Aktivitätsstatus
Aktiv
Tech-Stack
angular, typescript

Rechercherichtung

Reproduziere das Problem in der generierten App mit angular.json, app.spec.ts, TestBed.overrideComponent und den bereitgestellten Befehlen ng test --no-watch --code-coverage. Vergleiche die Coverage vor und nach dem Override und verfolge anschließend die Einstiegspunkte für Angular-CLI-Tests und AOT-Coverage. Die Aufgabe ist abgeschlossen, wenn der Override die Coverage des Komponenten-Templates nicht mehr ungenau macht.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

area: @angular/build devkit/build-angular:karma freq1: low severity3: broken type: bug/fix
Command

test

Is this a regression?
  • Yes, this behavior used to work in the previous version
The previous version in which this bug was not present was

No response

Description

When using TestBed.overrideComponent to stub a child component, the test code coverage is no longer accurate

Minimal Reproduction

Generate a new app with latest CLI and add a component:

npx @angular/cli@20.0.0-next.6 new aot-coverage --defaults --no-routing
cd aot-coverage
ng g c user

Use app-user in app.html:

<h1>Hello, aot-coverage</h1>
<app-user></app-user>

Edit angular.json to add "aot": true in the test section and run:

ng test --no-watch --code-coverage

Coverage is 100%

Statements   : 100% ( 12/12 )
Branches     : 100% ( 11/11 )
Functions    : 100% ( 3/3 )
Lines        : 100% ( 6/6 )

Now, in the app.spec.ts, add in beforeEach:

TestBed.overrideComponent(App, {
  remove: {
    imports: [User],
  },
  add: {
    imports: [User],
  }
});

(this happens with a proper stub of course but even removing the import and adding it back works to reproduce the issue)

Run the tests again:

ng test --no-watch --code-coverage

Coverage is now inaccurate because the template is not properly covered:

Statements   : 58.33% ( 7/12 )
Branches     : 90.9% ( 10/11 )
Functions    : 66.66% ( 2/3 )
Lines        : 66.66% ( 4/6 )
Exception or Error

Your Environment
Angular CLI: 20.0.0-next.6
Node: 22.14.0
Package Manager: npm 10.9.0
OS: darwin arm64

Angular: 20.0.0-next.7
... common, compiler, compiler-cli, core, forms
... platform-browser, router

Package                      Version
------------------------------------------------------
@angular-devkit/architect    0.2000.0-next.6
@angular-devkit/core         20.0.0-next.6
@angular-devkit/schematics   20.0.0-next.6
@angular/build               20.0.0-next.6
@angular/cli                 20.0.0-next.6
@schematics/angular          20.0.0-next.6
rxjs                         7.8.2
typescript                   5.8.3
zone.js                      0.15.0
Anything else relevant?

No response

Vorherrschende Sprache
TypeScript
Sterne
27k
Forks
11.8k
Ø Merge
17 Std. 25 Min.
Gemergte PRs (30 T.)
183

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus angular/angular-cli

Alle Issues in angular/angular-cli

Ähnliche Issues

Weitere Issues zu TypeScript

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.