angular typescript integration-testing specifications testbed

angular - Modificar un componente definido en TestBed.overrideComponent



typescript integration-testing (1)

Estamos usando

TestBed.overrideComponent(CoolComponent, { set: { template: ''<div id="fake-component">i am the fake component</div>'', selector: ''our-cool-component'', inputs: [ ''model'' ] } })

para anular un componente.

El componente tiene un ViewChild que configuramos en nuestro método ngOnInit

@Component({ selector: ''our-cool-component'', templateUrl: ''cool.component.html'' }) export class CoolComponent implements OnInit, OnDestroy { @Input() model: SomeModel @ViewChild(CoolChildComponent) coolChildComponent; ngOnInit() { this.coolChildComponent.doStuff(); } }

El CoolComponent a su vez, vive en un componente Wrapper .

Cuando llamamos a fixture.detectChanges() en el dispositivo Wrapper , esto intenta construir el CoolComponent, pero muere inmediatamente cuando llama a doStuff () porque CoolChildComponent no está definido.

¿Hay alguna manera de llegar al CoolComponent para CoolChildComponent su CoolChildComponent ? No parece que podamos sacarlo del Wrapper porque solo se hace referencia a través de la plantilla, no como una propiedad del componente.


ngOnInit() { this.coolChildComponent.doStuff(); }

debiera ser

ngAfterViewInit() { this.coolChildComponent.doStuff(); }

because

La vista secundaria se establece antes de llamar a la devolución de llamada ngAfterViewInit.