2017-02-22 24 views
5

Я использую Angular CLI 1.0.0-beta.32.2 и пишу модульный тест для услуги Angular 2, которая динамически создает компонент и вставляет его в другой компонент.Угловой 2 TestModuleMetadata не имеет свойства EntryComponents

В моем модульном тесте я пытаюсь создать макет компонента для тестирования моего сервиса, но вывод ng test вызывает ошибку, заявив, что мой макет Компонент указан в свойстве entryComponents. Когда я пытаюсь добавить компонент в свойство entryComponents объекта TestModuleMetadata, вот так: TestBed.createTestingModule({...entryComponents: [ TestDialogComponent ]...}) Я вижу следующую ошибку, указывающую, что свойство entryComponents не существует.

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?

Глядя на определение TestModuleMetadata показывает, что свойство entryComponents не существует. Итак, как мне динамически создавать компонент в моих модульных тестах в Angular 2 и Jasmine?

ответ

11

Насколько я знаю, он еще не поддерживается. Как временное решение вы можете создать поддельный модуль с entryComponent и импортировать его в модуль тестирования

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

, а затем

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

Это фиксированный, спасибо! Я обнаружил открытую проблему с отсутствием свойства 'entryComponents' в TestModuleMetadata, [ComponentFactoryResolver не знает компонентов, скомпилированных через TestBed] (https://github.com/angular/angular/issues/10760) –

Смежные вопросы