Angular单元测试已mock服务仍报ReaderAuthService依赖注入错误原因?
Angular单元测试mock服务仍报原服务依赖错误解决方案
核心原因
你的测试配置中ReaderAuthService的provider配置项键名大小写错误,导致mock替换规则未生效:
- 你写的是大写开头的
Provide: ReaderAuthService,Angular依赖注入要求该配置键为全小写的provide - 配置不生效的情况下,TestBed会尝试实例化原生
ReaderAuthService,该服务本身依赖HttpClient,你的测试模块没有引入HttpClient相关模块,因此抛出找不到HttpClient的注入错误
修复方法
直接修改测试代码中ReaderAuthService的provider配置即可,修正后的配置片段如下:
await TestBed.configureTestingModule({ providers: [ // 仅修改这里的Provide为小写provide即可 { provide: ReaderAuthService, useValue: authServiceSpy, }, { provide: Router, useValue: routerSpy, }, { provide: NGXLogger, useValue: loggerSpy, }, FormBuilder, ], // 其余配置保持不变 })
修改后TestBed会正确将你mock的authServiceSpy注入组件,无需额外引入HttpClient相关依赖,测试即可正常运行。
内容的提问来源于stack exchange,提问作者Michael
相关产品推荐
相关产品推荐

