Using overrideComponent breaks code coverage when testing with aot: true
- Langage dominant
- TypeScript
- Étoiles
- 27k
- Forks
- 11.8k
- Merge moyen
- 14 h 23 min
- PR mergées (30 j)
- 162
Description
### 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:
```html
Hello, aot-coverage
```
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`:
```ts
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
```text
```
### Your Environment
```text
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_
Guide de contribution
Ouvrir le guide de contribution
Piste de recherche
Reproduisez le problème dans l’application générée à l’aide de angular.json, app.spec.ts, TestBed.overrideComponent et des commandes fournies ng test --no-watch --code-coverage. Comparez la couverture avant et après l’override, puis suivez les points d’entrée des tests Angular CLI et de la couverture AOT. C’est terminé lorsque l’override ne rend plus la couverture du template du composant inexacte.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- angular, typescript
- Domaine
- build-system, testing
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- Active
- Clarté
- Plutôt claire
- Accessibilité débutants
- 48/100