你所提到的片斷給了部分想法。但我認爲你想測試一個組件數據的變化是否會影響其他組件的數據。
it('should xx', async(() => {
const fixture = TestBed.createComponent(ParentComponent);
fixture.detectChanges();
const child1 = fixture.debugElement.queryAll(By.directive(ChildComponent1))[0];
const but = child1.queryAll(By.css('#some_element'))[0].nativeElement; // change data in child1
fixture.detectChanges(); // detect changes
const child2 = fixture.debugElement.queryAll(By.directive(ChildComponent2))[0];
const child2info = child2.queryAll(By.css('some_element'))[1].nativeElement.innerHTML;
expect(child2info).toBe('some_data'); // check if reflected in child2
}));
所以,基本上你使用By.directive()
來獲取子組件的DOM元素。一旦你做到了這一點,你需要編輯使用nativeElement
的DOM。
編輯後,再次使用By.directive()
獲取第二子組件的DOM元素,然後再檢查其DOM數據的變化。
注: 對於ChildComponent1
改變數據,這樣做but.value = "something"
(如果是<input>
框),然後創建一個Event
你打電話之前detectChanges()
。
有一堆關於網絡上的解釋,plrese參考角文檔:https://angular.io/guide/testing#test-a-component。你在'app.component.spec.ts'中寫入測試。 – DAG
我不問如何編寫測試。另外,沒有文檔解釋瞭如何測試我試圖在這裏暗示的通信。相信我。我到處搜索。 –
這實際上是一個簡單的測試。你甚至嘗試過嗎?在這裏發佈你的測試,以便我可以繼續幫助你 – DAG