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

Angular14迁移后单元测试报NullInjectorError:缺少UntypedFormBuilder提供者

解决Angular 14迁移后UntypedFormBuilder单元测试报错问题

针对你遇到的NullInjectorError: No provider for UntypedFormBuilder!错误,提供以下排查和解决思路:

  • 移除手动添加的UntypedFormBuilder提供者
    ReactiveFormsModule已经内置提供了UntypedFormBuilder服务,你在providers数组中手动声明反而可能导致注入冲突。直接删除providers里的UntypedFormBuilder条目,保留ReactiveFormsModule导入即可。

  • 确认导入路径正确性
    确保组件和测试文件中,UntypedFormBuilder是从@angular/forms正确导入的:

    import { UntypedFormBuilder } from '@angular/forms';
    

    避免从第三方库或自定义路径导入同名对象。

  • 尝试切换为类型化FormBuilder
    Angular 14更推荐使用类型化表单API,如果你不需要未类型化版本,可以将组件中的UntypedFormBuilder替换为FormBuilder,测试模块无需额外配置,ReactiveFormsModule会自动提供该服务。

  • 检查测试初始化流程
    确保测试套件的初始化逻辑完整,比如在beforeEach中调用TestBed.compileComponents()(当组件使用templateUrl而非内联模板时),或者确认configureTestSuite的执行时机正确,没有被其他逻辑干扰。

调整后的测试配置示例:

configureTestSuite(() => {
    TestBed.configureTestingModule({
      imports: [
        ReactiveFormsModule,
        TranslateModule.forRoot(),
        BrowserAnimationsModule,
        NzStepsModule,
        NzAlertModule,
        NzSpinModule,
        NzCheckboxModule
      ],
      declarations: [ComponentX],
      schemas: [NO_ERRORS_SCHEMA]
    });
  });

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 20:55:07