2017-07-27 6 views
0

角度チュートリアルでは、HeroesListComponentの子を持つHeroesComponentの例があります。Angyで子コンポーネントをスパイする方法?

は、HeroesService~getHeroes()を使用します。 heroes-list.component.spec.ts内部spyOngetHeroes()

、我々は

spyOn(fixture.debugElement.componentInstance.heroesService, 'getHeroes').and.returnValue(Promise.resolve([])) 

私の質問は行うことができます - :

私は HeroesComponent specファイルの中にあった場合は heroes.component.spec.tsを私はこのような何かを行うことによって、子供 HeroesListComponent getHeroes()spyOnすることができます
spyOn(fixture.debugElement.componentInstance.heroesListComponent.heroesService, 'getHeroes').and.returnValue(Promise.resolve([])) 

明らかにこれはうまくいかなかったので、誰かが解決策を手伝うことができるかどうかを尋ねています。

HeroesComponentを開いたときに<hero-list>が正しく読み込まれているかどうかをテストしたいので、これを実行したいと思います。 HeroesListComponentが動作することを確認するテストが既にあるので、これは繰り返して見えるかもしれませんが、私は実際にはHeroesComponentが正しく読み込まれ、すべての子コンポーネントも確実に確認したいので、それは重要なテストです。

spyOnを使用する代わりに、HeroesServiceHeroesComponentの内側で偽造しようとしましたが、その構文を使用できません。私は内部にいるときにHeroesListComponentにモックオブジェクトを使用するように指示する方法がわかりませんheroes.component.spec.ts

ありがとう!

答えて

1

ユニットテストでは、テストされたユニットを除いて、すべてが嘲笑されたりスタブされたりします。オリジナル<hero-list>はモックに置き換えてください:

@Component({ selector: 'hero-list' }) 
class MockedHeroesListComponent {} 

TestBed.configureTestingModule({ 
    declarations: [ 
    HeroesComponent, 
    MockedHeroesListComponent 
    ] 
}); 

HeroesComponentテストが heroesListComponent.heroesServiceをテストするべきではありません。アサートされるべきことは、<hero-list>がコンパイルされたことだけである。 heroesListComponent.heroesServiceHeroesListComponentでテストしなければなりません。実数HeroesListComponentでテストしてください。

関連する問題