コンポーネントのコンポーネントクラスを受け取って、子として動的に作成するコンポーネントがあります。
let componentFactory = this.componentFactoryResolver.resolveComponentFactory(componentToCreate);
this.componentReference = this.target.createComponent(componentFactory);
ユニットテストを作成し、TestComponentを渡して作成およびレンダリングしようとしています。
TestBed
.configureTestingModule(<any>{
declarations: [MyAwesomeDynamicComponentRenderer, TestHostComponent],
entryComponents: [TestComponent],
});
configureTestingModule
はTestModuleMetadata
を持たないentryComponents
を期待するため、「any」へのキャストがありますが、「TestComponentのコンポーネントファクトリが見つかりません」というエラーが表示されます。
entryComponents
をTestBed
に提供するにはどうすればよいですか?
必要に応じて、テストファイルに直接実行することもできます。
TestBed.configureTestingModule({
declarations: [ MyDynamicComponent ],
}).overrideModule(BrowserDynamicTestingModule, {
set: {
entryComponents: [ MyDynamicComponent ],
}
});
さて、私はそれを理解しました。テストでは、モックコンポーネントを宣言する新しいモジュールを定義し、entryComponent
として指定する必要があります。
@NgModule({
declarations: [TestComponent],
entryComponents: [
TestComponent,
]
})
class TestModule {}
そして、それをTestBed
にインポートします
TestBed
.configureTestingModule({
declarations: [ValueComponent, TestHostComponent],
imports: [TestModule],
});
私はそれが誰かを助けることを願っています:]