You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 03:45:11