私は依存関係としてサービスを持つコンポーネントのユニットテストについて質問しており、このサーバーはHttp
に依存しています。 私は、このドキュメントを読んでいます:Test a component with an async serviceHttpサービスに依存する別のサービスに依存するサービス/コンポーネントをテストするには?
私は、この例のように実際には同じコードがあります。ここにところで
ngOnInit(): void {
this.twainService.getQuote().then(quote => this.quote = quote);
}
が私のコードです:code
ドキュメントは、私はコンポーネントをテストするときと言います他のサービスに依存している場合、私は:
- このサービスをモジュールプロバイダーとして設定してください コンポーネントに注入
GETサービス:その上
twainService = fixture.debugElement.injector.get(TwainService);
セットアップスパイ:
spy = spyOn(twainService, 'getQuote').and.returnValue(Promise.resolve(testQuote));
は、私は、同じ操作を行います。spec file: はここに私のspecファイルです。 は、私はそうは32
質問に29とIセットアップのスパイにサービスを注入します、ライン21でサービスを提供します。Error: No provider for Http!
:私はドキュメントのようにすべてを行う場合、私はエラーを取得していますと言います。私のGoodsDataService
はHttp
サービスに依存しているので、明らかにこのエラーが表示されます。私はそれをどのように扱うべきですか?私はこれをやった:私は単純なjavascriptオブジェクトを作成し、私は実際にGoodsDataService
を嘲笑した。また、このオブジェクトにメソッドスタブgetGoods
を追加しました。これらのすべての事柄は、実際に注入することなくメインコンポーネントをテストすることを可能にしますGoodsDataService
。しかし、私はこの解決策について全くわかりません。私はそれが汚れていて正しいとは思わない。 Http
サービスに依存する別のサービスに依存するユニットテストコンポーネント/サービスの正しい方法は何ですか?何かご意見は?
これは本当に良いアイデアだと思います。私は同じことを考えていた。しかし、どうしてdocsはそれを言っていないのですか?それは何か明白ですか? –
わかりやすいとは言いません。すべてのことを理解するには時間がかかります。しかし、私はそれがどのように起こったのかを理解すれば、それは論理的に聞こえると言うでしょう。私は、HTTPを使ったサービスとしてtwainサービスを導入したことを考えると、テストで偽のHttpサービスを提供する方法や、HttpModuleをインポートする方法を説明する必要があることに同意します。問題を開く必要があります。 –