当父组件方法被称为Angular 2单元测试时,子组件的模板不会更改

时间:2016-10-20 16:42:28

标签: unit-testing angular

这对我不起作用。请让Plunkr在下面工作。

describe("trying a test", () => {
  beforeEach(() => {
    TestBed.initTestEnvironment(BrowserDynamicTestingModule,  platformBrowserDynamicTesting());
    TestBed.configureTestingModule({
      declarations: [myCmp, ChildCmp]
    });
  });

  it("test should work", () => {
    const fixture = TestBed.createComponent(myCmp);
    const div = fixture.debugElement.children[0];
    const childCmp = div.queryAll(By.directive(ChildCmp));

    const divEl = div.queryAll(By.css('div'));

    divEl[0].triggerEventHandler('click', <Event>{});
    fixture.detectChanges();

    expect(childCmp[0].nativeElement.textContent).toBe("updated  value");

  });

}); 

https://plnkr.co/edit/wWJMDi3ZFC6RTSvCw4HH?p=preview

1 个答案:

答案 0 :(得分:0)

这不再是我的问题。在大多数情况下(我将在下面概述一个例外),我的父组件和子组件都在我的真实应用程序代码中更新,但我还没有更新Plunkr。

我只是在模板上单击某些内容时调用的spared on parent组件方法上使用.and.callThrough()。而不是一个简单的间谍。

我确实遇到了ngfor渲染子组件未更新的问题。这是我的另一个问题:Angular 2 unit testing: Make ngFor rendered, child components' templates change?