2017-06-03 40 views
1

我試圖測試組件調用detectChanges在它注入ChangeDetectorRef窺探ChangeDetectorRef.detectChanges

我已經通過代碼加強和它肯定叫,但現在看來,我對獲得不同的值ChangeDetectorRef在組件和測試中。這是代碼。我也嘗試過註釋掉的間諜,但它也不起作用。

it('should call ChangeDetectorRef.detectChanges from onFixedUpdate',() => { 
    let changeDetectorService = fixture.debugElement.injector.get(ChangeDetectorRef, null); 
    let spy = spyOn(changeDetectorService, 'detectChanges').and.callThrough(); 
    //let spy = spyOn(fixture.changeDetectorRef, 'detectChanges').and.callThrough(); 

    expect(spy).not.toHaveBeenCalled(); 

    fixture.componentInstance.onFixedUpdate(1); 

    expect(spy).toHaveBeenCalled(); 
}); 
+0

我有這個相同的問題。就好像我們無法訪問ChangeDetectorRef服務的實例。 –

回答

0

我有同樣的問題和使用Juan's answer to a similar SO question.

描述的技術的基本要點是直接在你的組件的屬性來窺探到注入ChangeDetectorRef分配。如果您已將此屬性標記爲私有(通常是這種情況),則通過將組件轉換爲any然後使用它在私有屬性上創建間諜來解決此問題。

請注意我會簡單地添加這個作爲評論,但我沒有足夠的代表 - 我希望這是好的!