javascript - run - Proporcionar "entrycomponents" para un TestBed
unit test angular 5 (2)
Tengo un componente que recibe una clase de componente de componente para crear dinámicamente como un niño.
let componentFactory = this.componentFactoryResolver.resolveComponentFactory(componentToCreate);
this.componentReference = this.target.createComponent(componentFactory);
Estoy intentando escribir una prueba de unidad y pasar algo de TestComponent para que se cree y se genere.
TestBed
.configureTestingModule(<any>{
declarations: [MyAwesomeDynamicComponentRenderer, TestHostComponent],
entryComponents: [TestComponent],
});
Se realiza la conversión a "cualquiera" porque configureTestingModule
espera TestModuleMetadata
que no tiene entryComponents
pero entryComponents
error: "No se ha encontrado ninguna fábrica de componentes para TestComponent".
¿Cómo puedo proporcionar la entryComponents
a un TestBed
?
Está bien, lo he descubierto. En la prueba, debe definir un nuevo módulo donde declarar su componente simulado y especificarlo también como un entryComponent
.
@NgModule({
declarations: [TestComponent],
entryComponents: [
TestComponent,
]
})
class TestModule {}
E importarlo en TestBed
TestBed
.configureTestingModule({
declarations: [ValueComponent, TestHostComponent],
imports: [TestModule],
});
Espero que ayude a alguien:]
También puede hacerlo directamente en su archivo de prueba si desea:
TestBed.configureTestingModule({
declarations: [ MyDynamicComponent ],
}).overrideModule(BrowserDynamicTestingModule, {
set: {
entryComponents: [ MyDynamicComponent ],
}
});