Estaba teniendo problemas con una prueba en angular. Lo extraño fue que las pruebas tuvieron éxito con
ng testy fracasó con
ng test --watch=false --browsers=ChromeHeadless --code-coveragePero agregar un constructor en el componente secundario resolvió el problema.
Componente principal:
Component({ templateUrl: './edit-organization.component.html', styleUrls: ['./edit-organization.component.scss'] }) export class EditOrganizationComponent implements OnInit { organization: Organization; errorReason: ErrorReason; organization$: Observable<Organization>; errorCodes: ErrorCode[]; constructor( protected currentUserRoute: ActivatedRoute, protected organizationService: OrganizationService, protected navigationService: NavigationService ) { } ngOnInit(): void { this.organization = this.currentUserRoute.snapshot.data.organization; } updateOrganization(form: NgForm) { ...}Componente secundario 1 (La prueba solía fallar aquí)
@Component({ templateUrl: './edit-business-organization-profile.component.html', }) export class EditBusinessOrganizationProfileComponent extends EditOrganizationComponent implements OnInit { organizationServiceTypes: OrganizationServiceType[] = organizationServiceTypes; constructor(readonly currentUserRoute: ActivatedRoute, readonly organizationService: OrganizationService, readonly navigationService: NavigationService) { super(currentUserRoute, organizationService, navigationService); } ngOnInit(): void { super.ngOnInit(); } }Componente hijo 2 (Las pruebas pasan aquí)
@Component({ templateUrl: './business-organization-profile.component.html', }) export class BusinessOrganizationProfileComponent extends EditOrganizationComponent implements OnInit { ngOnInit(): void { super.ngOnInit(); } } Tengo una prueba casi similar para los dos componentes que estaban pasando antes, pero cuando agregué un campo organizationServiceTypes en EditBusinessOrganizationProfileComponent , las pruebas comenzaron a fallar.
Anteriormente no tenía ningún constructor en el componente EditBusinessOrganizationProfileComponent , una vez que agregué el constructor, las pruebas comenzaron a pasar.
¿Alguien puede explicar cómo funciona la inyección de dependencia en este caso, ya que el código funciona perfectamente sin la prueba, es solo la prueba la que se rompe?