如何为主机组件创建ComponentFixture

时间:2018-07-24 22:26:03

标签: angular angular-test

我有以下情况:

ParentComponent和ChildComponent都具有name属性。将ParentComponent注入到ChildComponent中,并且子级显示父级和自己的名称。

我知道用服务来解决这个问题是更好的方法...

现在我在测试中遇到了问题。父项的名称在ngOnInit上设置,这很晚。我的测试不起作用。 我想我应该创建一个ComponentFixture以使用whenStable()方法,但是当我创建ChildComponent的固定装置时,ParentComponent已经在beforeEach中创建:

beforeEach(async(() => {
    TestBed.configureTestingModule({
        declarations: [ ParentComponent, ChildComponent ],
        providers: [ParentComponent]
    }).compileComponents();
}));

beforeEach(() => {
    fixture = TestBed.createComponent(ChildComponent);
    component = fixture.componentInstance;
    // how to create fixture of:
    // component.parentComponent
    // using the existing instance
    fixture.detectChanges();
});

还是还有其他方法可以等待主机组件就绪?使用ChildComponent的ComponentFixture的whenStable无效。

此处是stackblitz.com

上的完整示例

1 个答案:

答案 0 :(得分:0)

假设您正在编写单元测试用例,作为一种解决方法,您可以通过添加

在beforeEach()内部调用ParentComponent

component.parentComponent.ngOnInit();