2017-02-22 14 views
5

Używam Angular CLI 1.0.0-beta.32.2 i piszę test jednostkowy dla usługi Angular 2, która dynamicznie tworzy komponent i wstawia go do innego komponentu.Angular 2 TestModuleMetadata nie ma właściwości EntryComponents

Podczas testu jednostkowego próbuję utworzyć fałszywy komponent w celu przetestowania mojej usługi, ale wynik działania ng test powoduje zgłoszenie błędu, podając, że mój próbny komponent jest określony we właściwości entryComponents. Kiedy próbuję dodać komponent do właściwości entryComponents obiektu TestModuleMetadata, na przykład: TestBed.createTestingModule({...entryComponents: [ TestDialogComponent ]...}) Widzę następujący błąd stwierdzający, że właściwość entryComponents nie istnieje.

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?

Patrząc na definicji TestModuleMetadata pokazuje, że nieruchomość entryComponents nie istnieje. Więc jak mogę dynamicznie tworzyć komponent w moich testach jednostkowych w Angular 2 i Jasmine?

Odpowiedz

11

O ile wiem, nie obsługuje jeszcze. Jako obejście można utworzyć moduł fałszerskiemu entryComponent i importować je do modułu badawczego

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

a następnie

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

że ustalił, dziękuję! Znalazłem otwarty problem dotyczący pominięcia właściwości 'entryComponents' w module TestModuleMetadata, [ComponentFactoryResolver nie zna składników skompilowanych przez TestBed] (https://github.com/angular/angular/issues/10760) –