Angular单元测试报NullInjectorError无BlogService提供者问题排查
问题根因
错误的核心原因是测试模块的依赖注入配置属性拼写错误:Angular DI 配置中指定依赖令牌的属性名为provide,你在代码中错误写为provider(多了末尾的r字符),导致测试注入器没有识别到BlogService的提供者注册,因此抛出找不到服务的错误。
修复方案
修改blogs.component.spec.ts中TestBed的providers配置项即可:
beforeEach( waitForAsync(() => { TestBed.configureTestingModule({ declarations: [BlogsComponent], imports: [RouterTestingModule], // 仅需将属性名provider改为provide providers: [{ provide: BlogService, useValue: serviceStub }], }).compileComponents(); }) );
如果修改后仍有报错,可额外检查BlogService的导入路径是否和blogs.component.ts中的导入路径完全一致,避免因路径大小写、别名差异导致两个导入的服务令牌不是同一个引用。
内容的提问来源于stack exchange,提问作者NyeSass
相关产品推荐
相关产品推荐

