我有一个我正在测试的组件,它有很多子组件。在我的测试中,我想获得对这些子组件的一些对象的引用,我可以检查它们的属性,看它们是否正常运行并交互式地导致它们发生变化。 (例如:检查段按钮组件处于什么状态或手动强制它进入不同的状态)
我一直在查看角度的测试文档,但我看不到这样做的方法。我原本以为我可以对灯具debugElement
进行查询,找到子组件的调试元素,然后访问它componentInstance
,但这似乎总是如此null
。
例如,查看文档:{{3}}
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
的引用。有谁知道怎么做?
答案 0 :(得分:2)
类.hero
不是在组件上设置,而是在组件视图的内部div
上设置。这就是它没有componentInstance
附加
要让componentInstance
使用适当的选择器(在这种情况下是标记名称 - 您可以在selector
注释的属性@Component
中找到它:
heroEl = fixture.debugElement.query(By.css('dashboard-hero')); // find hero
或使用By.directive
heroEl = fixture.debugElement.query(By.directive(DashboardHeroComponent));