У меня есть компонент, который я тестирую, который имеет большое количество подкомпонентов. В моем тесте я хотел бы получить ссылку на объекты для некоторых из этих подкомпонентов, чтобы я мог проверить их свойства, чтобы убедиться, что они ведут себя правильно и интерактивно заставить их измениться. (например: проверьте, в каком состоянии находится компонент кнопки сегмента или вручную принудительно его в другое состояние)Тестирование: как искать экземпляр компонента для подкомпонента
Я смотрел на тестовую документацию для углового, но я не вижу способа сделать это. Я ожидал, что, возможно, я мог бы сделать запрос на debugElement
файла fixture, чтобы найти элемент отладки для подкомпонента, а затем получить доступ к нему componentInstance
, но это всегда будет null
.
Например, глядя на документы: https://angular.io/docs/ts/latest/guide/testing.html#!#component-inside-test-host
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ DashboardHeroComponent, TestHostComponent ], // declare both
}).compileComponents();
}));
beforeEach(() => {
// create TestHostComponent instead of DashboardHeroComponent
fixture = TestBed.createComponent(TestHostComponent);
testHost = fixture.componentInstance;
heroEl = fixture.debugElement.query(By.css('.hero')); // find hero
fixture.detectChanges(); // trigger initial data binding
});
Я хотел бы способ получить ссылку на DashboardHeroComponent
внутри TestHostComponent
. Кто-нибудь знает как это сделать?
Вы добавляете класс '.hero' к компоненту с помощью' @ HostBinding'? Или вы используете его в '@ Component'' selector'? – RomanHotsiy
Полный пример из документов находится здесь: https://angular.io/resources/live-examples/testing/ts/app-specs.plnkr.html Похоже, что он использует селектор компонентов. – Allen