Angular Jest单元测试KeyValueDiffers依赖注入报错如何解决
问题原因
KeyValueDiffers 是 Angular 框架内部提供的服务,自身存在内部依赖项,直接在测试的 providers 数组中声明该类作为提供者时,测试环境无法自动解析其构造函数的入参,因此抛出参数解析错误。
解决方法
有两种可行的解决方案,按需选择即可:
方案1:导入CommonModule(推荐)
KeyValueDiffers 由 @angular/common 包的 CommonModule 统一对外提供,直接在测试模块中导入 CommonModule 即可自动注入正确的 KeyValueDiffers 实例,无需手动配置提供者:
import { CommonModule } from '@angular/common'; // 其他依赖导入 TestBed.configureTestingModule({ imports: [CommonModule], providers: [ // 移除KeyValueDiffers的声明,改为配置你自己的服务Mock即可 { provide: CustomToastService, useValue: jest.fn() } // 按测试需求编写CustomToastService的mock逻辑 ] })
方案2:手动创建KeyValueDiffers实例
如果不想导入整个CommonModule,可以调用KeyValueDiffers的静态create()方法直接生成可用实例,手动注入:
import { KeyValueDiffers } from '@angular/core'; // 其他依赖导入 TestBed.configureTestingModule({ providers: [ { provide: KeyValueDiffers, useValue: KeyValueDiffers.create() }, { provide: CustomToastService, useValue: jest.fn() } ] })
内容的提问来源于stack exchange,提问作者raju
相关产品推荐
相关产品推荐

