2017-08-28 64 views
0

我有一個在其模板的事件,作爲子組件的子組件:Angular2集成測試,如何測試調用其父方法在其模板

child.html 
<a (click)="parent.onClick()"></a> 

通常,當我去的測試活動angular2,我會做這樣的事情:與設置

child.spec.ts 
     it('',() => { 
      let menu = fixture.debugElement.nativeElement.querySelector('a'); 
      menu.click(); 
      fixture.detectChanges(); 
      expect(something) 
     }); 

,看起來像:

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

但是在調用父級方法的情況下,孩子的模板中.click();永遠不要調用父母的方法。如果我將邏輯移動到子組件中,測試當然會起作用,但是,我想知道是否有方法測試當前安裝的click事件。

+0

我發現它不正確地實現父母的onClick()方法... 你應該嘗試以不同的方式做到這一點,並建立組件之間的正確溝通,並通過它進行測試。 通常情況下,你永遠不需要提供你的'ParentComponent'。 試着更準確地說明你的目標是什麼以及'OnClick()'方法的作用,這可能會有所幫助。 –

回答

0

我建議您閱讀官方文檔中的跨組件通信。有幾種方法可以完成您要查找的內容。由你來研究並找出哪一個符合你的用例。 Angular.io - component-interaction

相關問題