2016-10-07 7 views
0

私はこの作業をしようとしています。角2:テストでテンプレートが更新されない

it('should have expected <h1> text', async(() => { 
    let fixture = TestBed.createComponent(AppComponent); 
    fixture.detectChanges(); 

    const sectionEl = fixture.debugElement.query(By.css("section")); 

    spyOn(fixture.debugElement.componentInstance, "runMe"); 

    sectionEl.nativeElement.click(); 
    expect(fixture.debugElement.componentInstance.runMe).toHaveBeenCalled(); 

    expect(sectionEl.nativeElement.textContent).toBe("changed!"); 

ので、runMe機能は、セクションのテキストを変更しませんでしたが、スパイはrunMeが呼び出された示しています。

+0

あなたの投稿を編集して、あなたの 'runMe'関数のコードを含めることができますか? – jhhoff02

答えて

0

もっと完全な例を見ずには分かりにくいです。しかし、クリックすると、通常は非同期のイベント処理が行われます。したがって、イベントの処理が完了するまで待つ必要があります。テストでは、私たちができることは約束を返すfixture.whenStableを呼び出すことです。約束が解決したらテストを続けることができます。

sectionEl.nativeElement.click(); 
fixture.whenStable().then(() => { 
    expect(fixture.debugElement.componentInstance.runMe).toHaveBeenCalled(); 

    fixture.detectChanges(); 
    expect(sectionEl.nativeElement.textContent).toBe("changed!"); 
}); 
+0

私は自分のプロジェクトでこれを以前に試みましたが、うまくいきませんでした。私はまた、クイックスタート2のクイックスタートgithubレポの複製されたローカルコピーでこれを試してみましたが、動作しません。 – coder

+0

あなたはおそらくさらなる助けのための完全な例を掲示するべきです –

+0

peeskillet、私はこれのためにPlunkrを設定しようとしています。あなたはsrc/test.spec.tsでTestBedの作業を手伝ってくれますか? – coder

関連する問題