2017-11-12 12 views
1

私はangular2ユニットテスト(ジャスミン)を書いていると私は私が代わりに本物を提供するサービスを模擬する必要があることを知っているので、私は次の操作を行います。equal2クラスが提供されている場合、angular2テストでusesClassフィールドを使用すると違いがありますか?

{ provide: TranslateService, useClass: TranslateService } 

が、これはそれを行うための正しい方法ですテスト目的のために作成された別のクラスを持っていない場合(1つまたはカスタムのクラスを作成した場合)

TranslateServiceクラスを使用している場合や、別の方法で行う必要がある場合は、私にはこのようにしてもらえませんか?

答えて

1

モックサービスを使用する必要がない場合は、模擬サービスを作成して注入する必要はなく、元のサービスを注入するだけです。

あなたはまた、コンポーネント、ディレクティブ、パイプ、またはあなたのテストで使用されるサービスが TranslateServiceに依存する場合、それがなければなりません

TranslateService 

代わりの

{ provide: TranslateService, useClass: TranslateService } 

短い形式を使用することができます。この場合

何とかしてくれた。
プロバイダが見つからなかった場合は、エラーメッセージが表示されます。

サービスを提供せずに例外が発生しない場合、サービスは使用されないか、オプションです(constructor(@Optional this.translateService:TranslateService){})。
この場合、テスト中に実行されたコードがサービスにアクセスしようとしているかどうかによって、例外が発生する場合もあれば、発生しない場合もあります。

+0

モックサービスを使用する場合は、テスト目的のために新しいTranslateMockServiceを作成する必要がありますか? – masterach

+1

はい、プロバイダー '{provide:TranslateService、useClass:TranslateMockService}'の長いフォームを使用する必要があります –

+1

ここでは、あなたの目の前でスタック上のangular2コミュニティは何をしますか... – masterach

関連する問題