You need to enable JavaScript to run this app. Angular 9测试报错NULLINJECTORERROR无NgxSmartModalService提供者如何解决
优惠活动
大模型
产品
解决方案
定价
更多

Angular 9测试报错NULLINJECTORERROR无NgxSmartModalService提供者如何解决

问题原因

你的ActionService内部注入了NgxSmartModalService作为依赖,在MultiNumberComponent.spec.ts的测试模块配置中,仅声明了ActionService作为provider,没有提供它依赖的NgxSmartModalService,Angular测试运行时无法解析依赖链,因此抛出NullInjectorError。

可行解决方案
  • 方案1:直接引入真实的NgxSmartModalService到测试模块
    首先在MultiNumberComponent.spec.ts顶部导入依赖:
import { NgxSmartModalService } from 'ngx-smart-modal';

再修改测试模块的providers配置:

providers: [ 
  ActionService,
  NgxSmartModalService // 新增该行
]
  • 方案2:使用Mock对象替代真实服务(更推荐用于单元测试,避免引入无关依赖的逻辑)
    你可以创建模拟对象匹配NgxSmartModalService的调用接口即可,不需要实现具体逻辑:
// 在spec文件顶部定义mock,参数2填入你业务中实际用到的NgxSmartModalService方法名
const mockNgxSmartModalService = jasmine.createSpyObj('NgxSmartModalService', ['open', 'close' /* 按需补充方法名 */]);

// 修改测试模块的providers配置
providers: [
  ActionService,
  { provide: NgxSmartModalService, useValue: mockNgxSmartModalService }
]

该方案不会引入NgxSmartModalService自身的其他依赖,测试只会聚焦于MultiNumberComponent和ActionService本身的逻辑,运行速度更快、稳定性更高。

内容的提问来源于stack exchange,提问作者Nirmattha Rao

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 23:45:03