我在将服务注入(inject)到Angular 4.x中的另一个服务时遇到麻烦,并收到错误:Error: No provider for SkillsService!
我创建了一个repo that reproduces this error。您可以通过克隆存储库并仅从存储库根目录运行ng test
来在本地运行它。
我采取的步骤...
ng new
创建应用程序ng g service contact
创建ContactService ng g service skills
创建技能服务ng test
并收到错误:Error: No provider for SkillsService!
如何将提供者添加到ContactService的SkillsService?
看来这一定很简单,但事实证明,很难从文档中找出并进行搜索。
最佳答案
您对ContactService的测试使用了仅将ContactService声明为提供程序的测试模块。但是ContactService需要SkillsService。因此,SkillsService也必须是测试模块提供程序的一部分:
TestBed.configureTestingModule({
providers: [ContactService, SkillsService]
});
您还可以在测试中使用整个应用程序模块:
TestBed.configureTestingModule({
imports: [AppModule]
});
但是我不建议这样做,因为随着应用程序的增长,您的测试会越来越慢。