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

Angular服务单元测试报错ReferenceError: providers_2未定义求助

问题分析与解决方法

错误根源

你碰到的ReferenceError: providers_2 is not defined是两个语法/用法错误引发的:

  1. 测试代码的describe块未正确闭合,最后一行的)应该是});,语法错误会导致Angular测试编译器解析混乱,抛出这类莫名其妙的变量未定义报错。
  2. 获取服务实例的方式错误:TestBed.createComponent()是用来创建Angular组件实例的,不能用来获取服务,需改用TestBed.inject()(Angular 9+版本)来获取服务实例。

修正后的测试代码

import { TestBed } from '@angular/core/testing';

import {
  GLOBAL_CONFIG,
  TimeZoneStateService,
} from '@sdo/givs-common-service';

describe('TimeZoneStateService', () => {
  let service: TimeZoneStateService;

  beforeEach(() => {
    TestBed.configureTestingModule({
      providers: [
        TimeZoneStateService,
        {
          provide: GLOBAL_CONFIG,
          useValue: {
            timeZoneResolver: () => 'America/Toronto',
          },
        },
      ],
    });
    // 替换错误的createComponent,改用inject获取服务实例
    service = TestBed.inject(TimeZoneStateService);
  });

  it('should be created', () => {
    expect(service).toBeTruthy();
  });
}); // 修正此处的闭合括号

额外注意事项

如果测试中需要识别ViewConfig类型,确保已导入对应的类型定义文件,避免出现类型校验错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 20:12:03