Angular 4.xで別のサービスにサービスを挿入するのに問題があり、エラーを受け取ります:Error: No provider for SkillsService!
このエラーを再現するレポ を作成しました。リポジトリのクローンを作成し、ng test
をリポジトリのルートディレクトリから実行するだけで、これをローカルで実行できます。
私がとったステップ...
ng new
でアプリを作成しますng g service contact
を使用してContactServiceを作成しますng g service skills
でSkillsServiceを作成しますng test
を実行し、エラーを受け取ります:Error: No provider for SkillsService!
SkillsServiceのContactServiceにプロバイダーを追加するにはどうすればよいですか?
それは非常にシンプルなものでなければならないように思えますが、ドキュメントを調べて検索するのは難しいことがわかっています。
ContactServiceのテストでは、ContactServiceをプロバイダーとしてのみ宣言するテストモジュールを使用します。ただし、ContactServiceにはSkillsServiceが必要です。したがって、SkillsServiceもテストモジュールのプロバイダーの一部である必要があります。
TestBed.configureTestingModule({
providers: [ContactService, SkillsService]
});
テストでアプリケーションモジュール全体を使用することもできます。
TestBed.configureTestingModule({
imports: [AppModule]
});
しかし、アプリケーションの成長中にテストがますます遅くなるため、お勧めしません。