2017-02-22 9 views
5

私はAngular CLI 1.0.0-beta.32.2を使用しています.Angular 2サービスのユニットテストを作成しています。これはコンポーネントを動的に作成し、別のコンポーネントに挿入します。Angular 2 TestModuleMetadataにEntryComponentsプロパティがありません

私のユニットテストでは、サービスをテストするモックコンポーネントを作成しようとしましたが、ng testの出力は、私のモックコンポーネントがentryComponentsプロパティで指定されているというエラーをスローします。このように、TestBed.createTestingModule({...entryComponents: [ TestDialogComponent ]...})のように、TestModuleMetadataオブジェクトのentryComponentsプロパティにコンポーネントを追加しようとすると、entryComponentsというプロパティが存在しないことを示す次のエラーが表示されます。 TestModuleMetadata定義を見てみると

Chrome 56.0.2924 (Windows 10 0.0.0) DialogService should create a child component when opening FAILED Error: No component factory found for TestDialogComponent. Did you add it to @NgModule.entryComponents?

entryComponentsプロパティが存在しないことを示しています。ですから、Angular 2とJasmineのユニットテストでコンポーネントを動的に作成するにはどうすればいいですか?

答えて

11

私が知っている限り、それはまだサポートされていません。それを固定

TestBed.configureTestingModule({ 
    imports: [FakeTestDialogModule] 
+2

を回避策としては、entryComponentで偽のモジュールを作成することができますし、あなたのテストモジュール

@NgModule({ imports: [CommonModule], declarations: [TestDialogComponent], entryComponents: [TestDialogComponent] }) export class FakeTestDialogModule {} 

にそれをインポートして、ありがとうございました!私はTestModuleMetadataの 'entryComponents'プロパティの省略に関する問題を発見しました。[ComponentFactoryResolverはTestBedでコンパイルされたコンポーネントを認識していません](https://github.com/angular/angular/issues/10760) –

関連する問題