unit test run karma javascript unit-testing angular

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 ], } });