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

单元测试NgRx Signal Store时遇NullInjectorError:无Signal Store提供者

问题排查与解决

你遗漏了@ngrx/signals中SignalStore的专用注册方式——测试时不能直接把自定义Store类/实例加到providers数组,得用框架提供的provideSignalStore函数来注册。

具体操作:

  • 从@ngrx/signals导入provideSignalStore
  • 在TestBed的providers里替换掉直接添加的EquipmentFiltersItemStore,改成provideSignalStore(EquipmentFiltersItemStore)

示例代码:

import { provideSignalStore } from '@ngrx/signals';

TestBed.configureTestingModule({
  declarations: [YourComponentUnderTest],
  providers: [
    provideSignalStore(EquipmentFiltersItemStore),
    // 其他依赖服务...
  ]
});

原因是:@ngrx/signals的SignalStore内部依赖了一些底层服务(比如SignalStore自身的注入令牌),直接添加Store到providers无法触发这些依赖的注入,而provideSignalStore会自动处理所有必要的依赖注册,确保Store实例能被正确创建和注入。

额外检查点:

  • 确认你的EquipmentFiltersItemStore是用signalStore函数创建的标准Store实例
  • 组件中的providers配置是否正确(比如确实是在@Component的providers数组里声明了该Store)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 00:12:05