J'ai un composant qui reçoit une classe de composants pour créer dynamiquement en tant qu'enfant.
let componentFactory = this.componentFactoryResolver.resolveComponentFactory(componentToCreate);
this.componentReference = this.target.createComponent(componentFactory);
J'essaie d'écrire un test unitaire et de passer un TestComponent pour qu'il puisse le créer et le rendre.
TestBed
.configureTestingModule(<any>{
declarations: [MyAwesomeDynamicComponentRenderer, TestHostComponent],
entryComponents: [TestComponent],
});
Il y a un cast vers "any" car configureTestingModule
attend TestModuleMetadata
qui n'a pas entryComponents
mais j'obtiens une erreur: "Aucune fabrique de composants trouvée pour TestComponent".
Comment puis-je fournir le entryComponents
à un TestBed
?
Vous pouvez également le faire directement dans votre fichier de test si vous le souhaitez:
TestBed.configureTestingModule({
declarations: [ MyDynamicComponent ],
}).overrideModule(BrowserDynamicTestingModule, {
set: {
entryComponents: [ MyDynamicComponent ],
}
});
D'accord, je l'ai compris. Dans le test, vous devez définir un nouveau module dans lequel vous déclarez votre composant fictif et le spécifier également comme entryComponent
.
@NgModule({
declarations: [TestComponent],
entryComponents: [
TestComponent,
]
})
class TestModule {}
Et importez-le dans TestBed
TestBed
.configureTestingModule({
declarations: [ValueComponent, TestHostComponent],
imports: [TestModule],
});
J'espère que cela aidera quelqu'un:]